我在 node.js 下使用 npm 包Caja-HTML-Sanitizer 。
我可以使用 sanitizer() 函数清理 html 输入,但是如何使用白名单只允许某些标签(例如 p br strong)?
谢谢!
我在 node.js 下使用 npm 包Caja-HTML-Sanitizer 。
我可以使用 sanitizer() 函数清理 html 输入,但是如何使用白名单只允许某些标签(例如 p br strong)?
谢谢!
那个包看起来不是最新的——实际的 sanitizer 文件至少有三年的历史(根据 git 时间戳)。我不建议使用该版本。
不幸的是,目前没有任何参数可用于简单地提供备用白名单的 sanitizer。(有一些原因可能会在未来发生变化,但这还没有发生。)
修改内置白名单最直接的方法是获取一个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);
但是,这需要您对所需的限制进行编程,而不是对现有数据使用现有的白名单逻辑。它对将来可能对 sanitizer API 进行的更改也更加敏感。