Межсайтовый скриптинг: как проверить строку - PullRequest
1 голос
/ 16 января 2012

У меня есть строка.Это значение некоторого атрибута некоторого HTML-тега.Как проверить, содержит ли эта строка javascript?Например (атрибут SRC тега IMG):

1. <IMG src="javascript:alert('XSS')"> - contains script<br/>
2. <IMG src="JaVaScRiPt:alert('XSS')"> - contains script<br/>
3. <IMG &#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#88;&#83;&#83;&#39;&#41;> - also contains javascript

Ответы [ 2 ]

0 голосов
/ 05 апреля 2012

Это довольно сложно сделать, поскольку есть много странных и хитрых способов проникнуть в JavaScript.

HTMLPurifier имеет довольно сложный синтаксический анализ, чтобы отфильтровать всепотенциально небезопасный HTML, если вам необходимо разрешить ввод HTML.

Однако, как правило, вам даже не следует пытаться это делать, и просто всегда экранируйте строку .

В PHP это:

echo htmlspecialchars($string);

В JS вы можете использовать document.createTextNode() или эквивалент jQuery $(el).text() для безопасной вставки текста в DOM (эти два метода не требуют экранирования).

0 голосов
/ 16 января 2012

Сначала нужно канонизировать, затем проверить. Но я бы посмотрел на HtmlPurifier или OWASP AntiSamy для этого.

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