Tec*_*ith 65 xss serverside-javascript node.js
知道如何在node.js应用程序上防止XSS攻击?在那里处理删除hrefs中的javascript,onclick属性等的任何lib.从POSTed数据?
我不想为所有那些写一个正则表达式:)
有什么建议?
小智 54
我创建了一个捆绑Caja HTML Sanitizer的模块
npm install sanitizer
Run Code Online (Sandbox Code Playgroud)
http://github.com/theSmaw/Caja-HTML-Sanitizer
https://www.npmjs.com/package/sanitizer
任何反馈意见.
sso*_*low 24
在客户端上清理/重写HTML的答案之一建议借用Google Caja中的JS借用基于白名单的HTML清理程序,据我所知,从快速滚动浏览器可以实现HTML SAX解析器而不依赖于浏览器的DOM.
更新:此外,请记住,Caja清洁剂显然已经获得了完整,专业的安全审查,而正则表达式在安全妥协的方式很容易打字错误.
更新2017-09-24:现在还有DOMPurify.我还没有使用它,但看起来它符合或超过我寻找的每一点:
尽可能依赖运行时环境提供的功能.(通过尽可能依赖经过充分测试的成熟实现,对性能和最大化安全性都很重要.)
默认配置旨在尽可能少地剥离,同时仍然保证删除javascript.
toStaticHTML在IE8和IE9下,回归微软的专有,不可配置.高度可配置,使其适用于对可包含任意HTML的输入实施限制,例如WYSIWYG或Markdown注释字段.(事实上,这是最重要的)
他们认真对待兼容性和可靠性
Kor*_*nel 16
所有常用技术也适用于node.js输出,这意味着:
我不确定node.js是否带有一些内置功能,但是这样的东西应该可以完成这项工作:
function htmlEscape(text) {
return text.replace(/&/g, '&').
replace(/</g, '<'). // it's not neccessary to escape >
replace(/"/g, '"').
replace(/'/g, ''');
}
Run Code Online (Sandbox Code Playgroud)
Bag*_*ggz 15
我最近发现了chriso的node-validator.
get('/', function (req, res) {
//Sanitize user input
req.sanitize('textarea').xss(); // No longer supported
req.sanitize('foo').toBoolean();
});
Run Code Online (Sandbox Code Playgroud)
此库中不再提供XSS功能.
https://github.com/chriso/validator.js#deprecations
| 归档时间: |
|
| 查看次数: |
46374 次 |
| 最近记录: |