「[[Open棟梁 wiki>https://opentouryo.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>アプリケーション設計のポイント]] *目次 [#d8fd22ff] #contents *概要 [#lbadf161] [[ASP.NET Web Form>http://techinfoofmicrosofttech.osscons.jp/index.php?ASP.NET%20Web%20Form]]でのサニタイジング方針について纏めます。 *対応方針の材料 [#e662fe14] **ASP.NETの要求の検証 [#q82b1cd7] ASP.NETには、要求の検証という機能があり、~ クロスサイトスクリプティング(以下、XSSと略す)の~ 可能性のあるリクエストを識別し例外を発生させる機能がある。 -C# - ASP.NETのValidateRequest - Qiita~ http://qiita.com/akoba/items/adc148ab753ad6960805 この機能を無効にするには以下の手順に従う。 web.configで <system.web> <httpRuntime requestValidationMode="2.0" /> </system.web> と指定し(Modeが4.0だと全ページで強制ONになる)、 個別のページで@Pageディレクティブを以下のように設定する必要がある。 <@ Page validateRequest="false" %> ただし、無効にした場合は、独自の実装で~ XSSを防止するためのサニタイジング処理を実装する必要がある。 **TextBoxコントロール [#y2c6d84f] ASP.NETでは最低限、TextBoxコントロールが既定でサニタイジング処理を行う。 **その他のコントロール [#h4fd4273] しかし、Labelコントロール等は既定でサニタイジングされないので、~ TextBoxコントロールの入力をそのままLabelコントロール等に持って行くと、~ XSSが可能な脆弱性のあるWebアプリケーションが出来上がる。 *対応方針の案 [#a71dfb0d] 案件依存だが・・・。 **ASP.NETの要求の検証 = ON の場合 [#ncea605f] ASP.NETの要求の検証をONで、ランタイムエラー表示を回避したい場合、~ HttpRequest.FilterでPOSTのBodyをHTMLエンコードするなどの方式が考えられる。 -HttpRequest.Filter プロパティ (System.Web)~ https://msdn.microsoft.com/ja-jp/library/system.web.httprequest.filter.aspx Webメソッド(ASP.NET Web Services, WCF, ASP.NET Web API)のBodyを~ エンコードしないように、HTTPメソッドやURLのファイル拡張子を判別すると良いと考える。 **ASP.NETの要求の検証 = OFF の場合 [#t8b9e753] ASP.NETの要求の検証をOFFにした際の仕様の組み方は、~ 基本的には、 -[[カスタムコントロールのカスタマイズ>http://techinfoofmicrosofttech.osscons.jp/index.php?.NET%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E6%96%B9%E6%B3%95]]での対応か? -ライブラリ等で都度変換を行うか? になると考える。