Javascript实现防XSS转义功能

标签 javascript security xss owasp

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 可憎),所以也没有提供任何转义。您可以简单地预先编写您的代码或样式,然后调用适当的函数或设置适当的类。

encodeURIencodeURIComponent可用于对 URI 或其组件进行编码。

关于Javascript实现防XSS转义功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34200757/

相关文章:

java - 从使用 keytool 创建的文件在 osx lion 上加载 keystore

php - Laravel 中如何以及在何处应用 XSS 保护?

c# - 在客户端打印而不显示打印对话框

javascript - Backbone.js PushState 真

linux - 保持 OE/Yocto 图像更新的过程

xss - jinja2如何防止XSS攻击?

java - 部署依赖于 REST API 的单页面应用程序有哪些技术?

javascript - 如何使用 javascript 在 2 个 html 页面之间发送数据?

javascript - 移动设备中的菜单导航错误

javascript - 为什么我无法强制下载受污染的 Canvas ?为什么这是一个安全问题?