Open棟梁 wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

ASP.NET Web Formでのサニタイジング方針について纏めます。

対応方針の材料

ASP.NETの要求の検証

ASP.NETには、要求の検証という機能があり、
クロスサイトスクリプティング(以下、XSSと略す)の
可能性のあるリクエストを識別し例外を発生させる機能がある。

この機能を無効にするには以下の手順に従う。

web.configで

<system.web>
  <httpRuntime requestValidationMode="2.0" />
</system.web>

と指定し(Modeが4.0だと全ページで強制ONになる)、

個別のページで@Pageディレクティブを以下のように設定する必要がある。

<@ Page validateRequest="false" %>

ただし、無効にした場合は、独自の実装で
XSSを防止するためのサニタイジング処理を実装する必要がある。

TextBox?コントロール

ASP.NETでは最低限、TextBox?コントロールが既定でサニタイジング処理を行う。

その他のコントロール

しかし、Labelコントロール等は既定でサニタイジングされないので、
TextBox?コントロールの入力をそのままLabelコントロール等に持って行くと、
XSSが可能な脆弱性のあるWebアプリケーションが出来上がる。

対応方針の案

案件依存だが・・・。

ASP.NETの要求の検証 = ON の場合

ASP.NETの要求の検証をONで、ランタイムエラー表示を回避したい場合、
HttpRequest?.FilterでPOSTのBodyをHTMLエンコードするなどの方式が考えられる。

Webメソッド(ASP.NET Web Services, WCF, ASP.NET Web API)のBodyを
エンコードしないように、HTTPメソッドやURLのファイル拡張子を判別すると良いと考える。

ASP.NETの要求の検証 = OFF の場合

ASP.NETの要求の検証をOFFにした際の仕様の組み方は、

基本的には、

になると考える。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS