node.js でnpm パッケージCaja-HTML-Sanitizerを使用しています。
sanitizer() 関数を使用して HTML 入力をサニタイズできますが、ホワイトリストを使用して特定のタグ (例: p br strong) のみを許可するにはどうすればよいですか?
ありがとう!
node.js でnpm パッケージCaja-HTML-Sanitizerを使用しています。
sanitizer() 関数を使用して HTML 入力をサニタイズできますが、ホワイトリストを使用して特定のタグ (例: p br strong) のみを許可するにはどうすればよいですか?
ありがとう!
そのパッケージは最新のようには見えません — 実際のサニタイザー ファイルは少なくとも 3 年前のものです (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);
ただし、これには、既存のデータで既存のホワイトリスト ロジックを使用するのではなく、目的の制限をプログラムする必要があります。また、将来のサニタイザー API の変更の可能性にも敏感です。