Достаточно ли этой функции для обнаружения xss? - PullRequest
6 голосов
/ 18 февраля 2012

Я нашел его внутри приложения "Symphony CMS", оно очень маленькое:

https://github.com/symphonycms/xssfilter/blob/master/extension.driver.php#L100

И я думал о том, чтобы украсть его и использовать в своем собственном приложении для очистки строки с помощью HTML для отображения. Как вы думаете, это делает хорошую работу?

ps: я знаю, что есть HTML Purifier, но эта штука огромна. И я бы предпочел что-то менее разрешительное, но я все же хочу, чтобы оно было эффективным.


Я проверял его на строки из этой страницы: http://ha.ckers.org/xss.html. Но если не удается "XSS-локатор 2". Не уверен, как кто-то может использовать эту строку для взлома сайта:)

Ответы [ 2 ]

8 голосов
/ 18 февраля 2012

Нет, я бы этим не пользовался.Существует множество различных атак, которые зависят от контекста, в который вставляются данные.Одна функция не будет охватывать их всех.Если вы внимательно посмотрите, на самом деле есть только четыре теста:

// Set the patterns we'll test against
$patterns = array(
    // Match any attribute starting with "on" or xmlns
    '#(<[^>]+[\x00-\x20\"\'\/])(on|xmlns)[^>]*>?#iUu',

    // Match javascript:, livescript:, vbscript: and mocha: protocols
    '!((java|live|vb)script|mocha):(\w)*!iUu',
    '#-moz-binding[\x00-\x20]*:#u',

    // Match style attributes
    '#(<[^>]+[\x00-\x20\"\'\/])style=[^>]*>?#iUu',

    // Match unneeded tags
    '#</*(applet|meta|xml|blink|link|style|script|embed|object|iframe|frame|frameset|ilayer|layer|bgsound|title|base)[^>]*>?#i'
);

Ничего другого не проверено.Помимо атак, которые эти тесты не обнаруживают (ложно-отрицательные), он также может ошибочно сообщать некоторые входные данные как атаку (ложно-положительные).

Поэтому вместо того, чтобы пытаться обнаруживать атаки XSS, просто убедитесь, что вы используете правильныедезинфицировать.

1 голос
/ 18 февраля 2012

Я думаю, что он хорошо справляется с тестированием строк, по крайней мере, это то, что я могу сказать в соответствии с моими тестами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...