tekitoumemo’s diary

思ったことを書くだけ。長文版Twitter

【ASP.NET MVC】MVC2とMVC3以降のバリデーションの挙動がちょっと違う

技術ネタ。

あまり知ってても知らなくてもどうでも良い技術ネタ。

web.configに以下のコード書くと勝手にバリデーションしてくれて便利だよ☆ってやつなんだけどMVC2MVC3の挙動が違いすぎて「は?」ってなった。

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

MVC2でquerystringに危険なコードが埋め込まれた場合は以下の500エラーが発生

System.Web.HttpRequestValidationException: 危険な可能性のある Request.QueryString 値がクライアント (="...T 1,NULL,'<script>alert("XSS")...") から検出されました。

MVC3だと普通に200オッケー。

バリデーションされてねーじゃん!って思っでquerystringからMVCにぶっこんでみたら500エラー発生。ちゃんと出来てる。。

ようわからんからいろいろ調べたらMVC3以降は.NETFramework4系に移行して挙動も違うんだと。
最新のHttpRequestValidat‌​ionExceptionがパラメータで検知した段階でエラーを出す仕様みたい。

まっ、普通に200でいいよね