0

node.js でnpm パッケージCaja-HTML-Sanitizerを使用しています。

sanitizer() 関数を使用して HTML 入力をサニタイズできますが、ホワイトリストを使用して特定のタグ (例: p br strong) のみを許可するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

8

そのパッケージは最新のようには見えません — 実際のサニタイザー ファイルは少なくとも 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 の変更の可能性にも敏感です。

于 2013-08-05T17:53:22.330 に答える