我有一个字符串。这是某些html标签的某些属性的值。
如何检查此字符串是否包含javascript?
例如(IMG标签的SRC属性):
1. <IMG src="javascript:alert('XSS')"> - contains script<br/>
2. <IMG src="JaVaScRiPt:alert('XSS')"> - contains script<br/>
3. <IMG javascript:alert('XSS')> - also contains javascript
答案 0 :(得分:0)
首先必须规范化,然后检查。但我会看看HtmlPurifier或OWASP AntiSamy。
答案 1 :(得分:0)
这很难做到,因为有很多奇怪而棘手的方法可以偷偷进入JavaScript。
如果您必须首先允许HTML输入,那么HTMLPurifier具有相当复杂的解析来过滤掉所有可能不安全的HTML。
但是,通常你甚至不应该尝试这样做,只需总是逃避字符串。
在PHP中:
echo htmlspecialchars($string);
在JS中,您可以使用document.createTextNode()
或jQuery的等效$(el).text()
来安全地将文本插入DOM(这两种方法不需要转义)。