我在node.js下使用npm包Caja-HTML-Sanitizer。如何使用Google的Caja HTML Sanitizer在node.js下將白名單列入白名單?
我可以使用sanitizer()函數消毒html輸入,但是如何使用白名單來僅允許某些標記(例如p br strong)?
謝謝!
我在node.js下使用npm包Caja-HTML-Sanitizer。如何使用Google的Caja HTML Sanitizer在node.js下將白名單列入白名單?
我可以使用sanitizer()函數消毒html輸入,但是如何使用白名單來僅允許某些標記(例如p br strong)?
謝謝!
該軟件包看起來並不是最新的 - 實際的清理文件至少有三年(根據git時間戳)。我不會推薦使用該版本。
不幸的是,目前沒有消毒劑的參數,只是提供一個備用白名單。 (有此可能會在未來改變的原因,但是這並沒有發生。)
最直接的方法來修改內置白名單是獲得卡哈源代碼樹,修改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);
然而,這需要你,而你的編程所需的限制比使用現有的白名單中的邏輯與現有數據。它對未來對消毒劑API的可能更改也更爲敏感。