質問: だから私はホワイトリストでhtmlの敏捷性を使ってC#htmlサニタイザを構築してきました。次のような場合を除いて正常に動作します。 ``` ``` 私はsrc属性を許可したいのですが、明らかに悪意のあるものではありません。私が調べたすべてのものは、タグとその属性のホワイトリストを推奨しています。このようなことをどうやって処理しますか?私はこれが新しいブラウザーではうまくいかないことを知っていますが、私はセキュリティにあまり精通していませんし、攻撃者ができる他の巧妙なものもあると確信しています。
回答: クロスサイトスクリプティング(XSS)攻撃は、クライアント側のスクリプトコードを注入することにより、Webページの検証における脆弱性を悪用します。 Webアプリケーションがクロスサイトスクリプティング攻撃を受けやすい一般的な脆弱性には、入力の適切な検証、出力のエンコードの失敗、共有データベースから取得したデータの信頼性の低下などがあります。クロスサイトスクリプティング攻撃からアプリケーションを保護するには、すべての入力が悪意のあるものと仮定します。すべての入力を制限して検証します。潜在的にHTML文字を含む可能性があるすべての出力をエンコードします。これには、ファイルおよびデータベースから読み取られたデータが含まれます。 クロスサイトスクリプティング攻撃の最も深刻な例の1つは、攻撃者が信頼できるサイトへのアクセスを提供する認証Cookieを取得するスクリプトを作成し、攻撃者が知っているWebアドレスにそのCookieを投稿するときに発生します。これにより、攻撃者は正当なユーザーの身元情報を偽装し、Webサイトへの不正なアクセスを得ることができます。 Webアプリケーションをクロスサイトスクリプティング攻撃の影響を受けやすい一般的な脆弱性には次のようなものがあります。 * 入力の制約と検証に失敗しました。 * 出力のエンコードに失敗しました。 * 共有データベースから取得したデータを信頼する。 ガイドライン クロスサイトスクリプティング攻撃を防止するための最も重要な2つの対策は次のとおりです。 * 入力を制限する。 * エンコード出力。 **ステップの要約** クロスサイトスクリプティングを防止するには、次の手順を実行します。 **手順1.** ASP.NET要求の検証が有効になっていることを確認します。 **ステップ2.** HTML出力を生成するASP.NETコードを確認します。 **ステップ3.** HTML出力に入力パラメーターが含まれているかどうかを判別します。 **ステップ4** 。潜在的に危険なHTMLタグと属性を確認します。 **ステップ5** 。対策を評価する。 詳細は第2の参考文献を参照してください。 参考文献: ***クロスサイトスクリプティングの説明:XSS攻撃を防ぐ方法*** ***How To:ASP.NETでのクロスサイトスクリプティングの防止***