検証のリクエスト-ASP.NET MVC 2
-
22-07-2019 - |
質問
ASP.NET MVC 2のリクエスト検証が変更されましたが、より正確には検証されていませんか?
次のことを行いました:
Web.configs(AppディレクトリおよびViewsディレクトリ内)
<pages
validateRequest="false"
コントローラー/アクション属性
[ValidateInput(false)]
@Page Viewディレクティブで
ValidateRequest="false"
ページは引き続き検証され、HTMLコンテンツが投稿されると例外がスローされます。
更新
新しいASP.NET MVC 2アプリケーションを作成し、Home Controllerのインデックスをこれに変更しました
[ValidateInput(false)]
public ActionResult Index(string InputText)
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
および自分の表示ページ
<% using(Html.BeginForm()){ %>
<%= Html.TextBox("InputText") %>
<input type="submit" />
<% } %>
それでも同じ問題ですが、例外がスローされます。
解決
次回エラーをより注意深く読む必要があります:
ページがアプリケーションリクエストの検証設定を上書きできるようにするには、 set requestValidationMode =&quot; 2.0&quot;構成セクションで。 この値を設定した後、リクエスト検証を無効にすることができます validateRequest =&quot; false&quot;の設定
これをアプリケーションのweb.configに入れます
<system.web>
<httpRuntime requestValidationMode="2.0" requestPathInvalidCharacters="" />
</system.web>
それは機能しました。
更新:
ASP.NET 4を実行していました。その理由:P
他のヒント
XSSに関する義務的な警告をここに挿入します。
すべての検証はASP.NET MVCのこのコントローラーレベルで行われるため、 ValidateInputAttribute
でコントローラー(またはアクション)を装飾するだけで十分です。
今アクションでこれを試したところ、それを出力するときに素敵で邪悪なalert()を返すので、ここで他に何かが起こっていると推測します。
HandleErrorAttribute
はどこかに設定されていますか?