「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
ASP.NETでのXSS対策のサニタイジング方針について纏める。
一般的に、どのような対応方法があるか?
要求の検証という機能があり、
クロスサイトスクリプティング(以下、XSSと略す)の
可能性のあるリクエストを識別し例外を発生させる機能がある。
この機能を無効にするには以下の手順に従う。
web.configで
<system.web> <httpRuntime requestValidationMode="2.0" /> </system.web>
と指定し(Modeが4.0だと全ページで強制ONになる)、
個別のページで@Pageディレクティブを以下のように設定する必要がある。
<@ Page validateRequest="false" %>
ただし、無効にした場合は、独自の実装で
XSSを防止するためのサニタイジング処理を実装する必要がある。
MVCには、Web Formsの「要求の検証」相当の機能がないので、代替可能なValidateInput?属性を使用する。
案件依存だが・・・。
要求の検証をONで、ランタイムエラー表示を回避したい場合、
HttpRequest?.FilterでPOSTのBodyをHTMLエンコードするなどの方式が考えられる。
Webメソッド(ASP.NET Web Services, WCF, ASP.NET Web API)のBodyを
エンコードしないように、HTTPメソッドやURLのファイル拡張子を判別すると良いと考える。
要求の検証をOFFにした際の仕様の組み方は、
基本的には、
になると考える。
同様に、ValidateInput?属性か、HTMLヘルパを使用する。
ValidateInput?属性をtrueに設定する。
[ValidateInput(true)]
[ValidateInput(false)]
こちらは、検出されたら基本的に対応する。
一般的に、足がつかない、
が多いと考える。
Tags: :テスト