1

ユーザー入力 (プレーン テキスト文字列または HTML 文字列) に基づいて、innerHTML を使用して HTML フラグメントを Web ページに挿入するマイクロ テンプレート ユーティリティを作成しました。

私の主な懸念は、悪意のあるスクリプト インジェクションのリスクです。スクリプトは、script タグを介して、またはインライン イベント (img onload、div onmouseover など) で挿入できます。

このようなインジェクションを防ぐために HTML 文字列をサニタイズする方法はありますか? また、知っておくべき他のスクリプト挿入方法はありますか?

4

1 に答える 1

4

安全を確保したい場合は、クライアントとサーバーの両方でテンプレートをサニタイズします。悪意のあるユーザーは、あなたが説明していないエクスプロイトを知っているはずなので、独自のアンチ XSS ライブラリを作成しないでください。ニュアンスが多すぎるため、XSS の専門家でない限り、1 つを見逃すことは間違いありません。

クライアント側では、Google Cajaには非常に優れたHTML サニタイズ ユーティリティscriptがあり、HTML 文字列に対して強力なサニタイズを実行し、悪意のある属性や、悪意のあるユーザーがタグの挿入による XSS 攻撃などの厄介なことを実行できるその他の領域をクリーンアップします。また、属性やその他のあらゆる種類の XSS インジェクション ポイント (objectおよびappletタグなど) もスクラブするため、かなり安全に感じることができます。

悪意のあるユーザーが単純に JavaScript を無効にしたり、Caja のサニタイザーを上書きしたりしないように、サーバー上でサニタイズする必要がありますが、Caja を使用して入力と出力の両方をサニタイズして、できるだけ多くの情報をキャッチすることができます。

于 2012-06-04T21:02:39.367 に答える