2012-01-16 2 views
1

У меня есть строка. Это значение некоторого атрибута некоторого тега 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 

ответ

0

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

0

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

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

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

В PHP это:

echo htmlspecialchars($string); 

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

Смежные вопросы