.NET開発基盤部会」によって運営されています。†ASP.NETでのXSS対策のサニタイジング方針について纏める。要求の検証という機能があり、クロスサイトスクリプティング(以下、XSSと略す)の可能性のあるリクエストを識別し例外を発生させる機能がある。Qiitahttp://qiita.com/akoba/items/adc148ab753ad6960805この機能を無効にするには以下の手順に従う。個別のページで@Pageディレクティブを以下のように設定する必要がある。%>ただし、無効にした場合は、独自の実装でXSSを防止するためのサニタイジング処理を実装する必要がある。†TextBox?コントロールASP.NETでは最低限、TextBox?コントロールが既定でサニタイジング処理を行う。その他のコントロールしかし、Labelコントロール等は既定でサニタイジングされないので、TextBox?コントロールの入力をそのままLabelコントロール等に持って行くと、XSSが可能な脆弱性のあるWebアプリケーションが出来上がる。Formsの「要求の検証」相当の機能がないので、代替可能なValidateInput?属性を使用する。Formsの「コントロール」相当の機能がないので、HTMLヘルパを使用する。Formsの「コントロール」で、基本的にサニタイジング処理が実装されている。要求の検証をONで、ランタイムエラー表示を回避したい場合、HttpRequest?.FilterでPOSTのBodyをHTMLエンコードするなどの方式が考えられる。API)のBodyをエンコードしないように、HTTPメソッドやURLのファイル拡張子を判別すると良いと考える。基本的には、カスタムコントロールのカスタマイズでの対応か?ライブラリ等で都度変換を行うか?になると考える。同様に、ValidateInput?属性か、HTMLヘルパを使用する。†ValidateInput?属性をtrueに設定する。†ValidateInput?属性がfalseの場合、[ValidateInput(false)]HTMLヘルパでサニタイジングする。†こちらは、検出されたら基本的に対応する。攻撃の成功が割と明らかなので、誤検知が少ない。匿名アクセス可能なサイトか、フリーメールサービスのアドレスでサインアップ可能なサイトが多いと考える。上記のような匿名アクセスが可能なサイトの場合、誰でも攻撃可能。