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)呈现的数据。
更新 2:ESAPI JavaScript似乎是我要找的东西,尽管它仍然只是“Alpha 质量”
最佳答案
由于您倾向于在(客户端)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 可憎),所以也没有提供任何转义。您可以简单地预先编写您的代码或样式,然后调用适当的函数或设置适当的类。
encodeURI
和 encodeURIComponent
可用于对 URI 或其组件进行编码。
关于Javascript实现防XSS转义功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34200757/