このプロジェクトについて
DOMPurifyは、HTML、MathML、SVG向けのDOMベースのXSSサニタイザーです。汚染されたマークアップを文字列、Element、DocumentFragment、Documentとして受け取り、スクリプトを実行したり意図したマークアップコンテキストから逸脱したりする可能性のある要素や属性を除去し、デフォルトでサニタイズ済みHTMLを返します。基本的なブラウザAPIはDOMPurify.sanitize(dirty)で、バンドラベースのプロジェクトでもインポートできます。
デフォルト設定では、CSSやカスタムデータ属性を含むHTML、SVG、MathMLが許可されます。アプリケーションは、HTMLのみなどの単一プロファイルに出力を制限したり、許可するタグや属性を定義したり、特定のタグや属性を禁止したり、タグや属性を追加したり、ARIAやデータ属性を制御したり、カスタム要素やカスタマイズされた組み込み要素を管理したり、データURIやURLプロトコルの処理を調整したりできます。フックを使用すると、サニタイズ中に追加のプログラムによる検査や変更が可能です。DOMPurify.removedプロパティはデバッグ用に除去されたノードを報告しますが、プロジェクトはセキュリティ判断に使用すべきではないと明示しています。
DOMPurifyは最新のSafari、Opera、Edge、Firefox、Chrome、および現在のBlink、Gecko、WebKitエンジンを使用するその他のブラウザをサポートしています。Internet Explorerなどのサポート対象外のレガシーブラウザでは、入力を変更せずに返し、isSupportedを公開して呼び出し元がフォールバックを提供できるようにします。v2.5.9で終了する2.xブランチは、IE互換のセキュリティアップデートのための文書化されたラインです。
サーバーサイドでの使用は、DOMが提供されている場合にNode.jsで可能です。文書化されたセットアップではjsdomを使用し、READMEではjsdomを最新に保つことを強く推奨しています。古いDOM実装にはサニタイズを損なうパーサー関連の脆弱性が含まれる可能性があるためです。現時点ではDOMPurifyとhappy-domの組み合わせに対して特に警告しています。isomorphic-dompurifyパッケージは、クロス環境セットアップ向けの高レベルラッパーとして言及されています。
その他の機能には、DOMテンプレートの再帰的サニタイズ、Shadow DOMサポート、オプションのTrusted Types統合が含まれます。サポートするブラウザでRETURN_TRUSTED_TYPEを有効にすると、sanitizeはTrustedHTML値を返すことができます。呼び出し元は内部のTrusted Typesポリシーを提供または無効化することもでき、ライブラリは再帰的なポリシー設定を検出します。
プロジェクトは安全な使用境界を強調しています。サニタイズ済みマークアップを異なるコンテキストで変更または再解析したり、DOMを変更する別のライブラリを通過させたりすると、サニタイザーの保証が無効になる可能性があります。READMEは、セキュリティ目標と脅威モデル、攻撃クラスとバイパス履歴、デフォルトのタグと属性リスト、オンラインデモ、プライベートセキュリティ連絡先にリンクしています。自動テストは、Linux、macOS、Windows上の現在のChromium、Firefox、WebKitエンジン、古いエンジンのスナップショット、およびjsdomを使用する複数のNode.jsバージョンで実行されます。DOMPurifyはMPL-2.0またはApache-2.0のデュアルライセンスです。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.