質問

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 はどこかに設定されていますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top