OWASP XSS (Cross Site Scripting) Prevention Cheat Sheet列出了通过适当地转义数据来防止XSS攻击的规则,它包含指向Java语言中这些转义方法的引用实现的链接(HTML Escape,Attribute Escape,Javsacript Escape,CSS Escape,URL Escape) )。
在Javascript中是否存在任何实现,或者我必须“自己动手”?
更新:我的意思是在浏览器中运行Javascript。例如,用于转义使用jQuery html()方法呈现的文本(当然text()更安全),或者使用模板引擎(如EJS)转义呈现的数据。
UPDATE2:ESAPI JavaScript似乎正是我所寻找的,虽然它仍然只是“Alpha质量”
答案 0 :(得分:2)
由于您倾向于在(客户端)JavaScript中使用DOM,因此不需要HTML和HTML属性转义。例如,给定不受信任的输入input
,
var el = document.createElement('div');
el.setAttribute('title', input);
el.appendChild(document.createTextNode(input));
非常安全,因为您从不首先构建(序列化)HTML。
如果您是从JavaScript代码编写自定义JavaScript或CSS ,那么您做错了(包括使用document.write
或某些数据URI脚本src abominations),因此没有提供转义两者之一。您可以事先编写代码或样式,然后调用相应的函数或设置适当的类。
encodeURI
和encodeURIComponent
可用于对URI或其组件进行编码。
答案 1 :(得分:0)
您可以使用js-xss库。对我来说,它可以与我用来将脚本注入HTML的测试用例一起工作。