Srg*_*man 0 javascript xss node.js google-caja
我在node.js下使用npm包Caja-HTML-Sanitizer.
我可以使用sanitizer()函数清理html输入,但是如何使用白名单只允许某些标签(例如p br strong)?
谢谢!
该软件包看起来不像是最新的 - 实际的清理程序文件至少有三年的历史(根据git时间戳).我不建议使用该版本.
不幸的是,目前没有清洁剂的参数,它只是提供备用白名单.(这有可能在未来发生变化,但尚未发生.)
修改内置白名单最直接的方法是获取Caja源代码树,修改src/com/google/caja/lang/html/*-whitelist.json
并重建($ ant
); 与您发现的相同形式的消毒剂是内置的ant-lib/com/google/caja/plugin/html-sanitizer-bundle.js
.
您还可以使用标记策略直接自定义行为.而不是打电话sanitize(html)
,使用sanitizeWithPolicy
:
var basicPolicy = html.makeTagPolicy();
function customPolicy(tagName, attribs) {
if (/* whatever additional condition you want */) {
return basicPolicy(tagName, attribs);
}
}
...
return html.sanitizeWithPolicy(input, customPolicy);
Run Code Online (Sandbox Code Playgroud)
但是,这需要您编写所需的限制,而不是将现有的白名单逻辑与现有数据一起使用.它对将来对消毒剂API的可能更改也更敏感.
归档时间: |
|
查看次数: |
1665 次 |
最近记录: |