3

ASPNET4で次のエラーが発生します。

A potentially dangerous Request.Path value was detected from the client (<).

Web.configでrequestValidationMode="2.0"を使用する必要があることを読みました。

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime requestValidationMode="2.0" />
</system.web>

したがって、私のメソッドは次のようになります。

[ValidateInput(false)]
public ActionResult Search(string query, string type){

//method body

return result;
}

それは素晴らしい働きをします。ただし、他の多くのアプリケーションがこのファイルに依存しており、セキュリティの脆弱性や他の場所でエラーが発生する可能性があるため、Web.configファイルを変更できません。

私のアプリケーションは特殊文字を受け入れるのに十分安全ですが、開発中のシステムの他の部分について同じことを言うことはできません。メソッドの入力として特殊文字を受け入れる代替手段はありますか?

例:

www.mydomain.com/search/query/<myquery<ffoo/type/dept
4

1 に答える 1

1

私は現在のプロジェクトで同じ問題を抱えています..これを修正するために追加しなければならなかったものを投稿します..また、これが.Net 2.0で動作する.NET 4.0にバグがあることに注意してください.プロジェクトは3.5ですが、IIS AppPoolには4.0を実行するプロジェクトがあると思います

これを Web 構成ファイルに追加すると、発生していた奇妙なエラーが修正されました

<httpRuntime requestValidationMode="2.0"
   requestPathInvalidCharacters="*,:,&amp;,\"
   relaxedUrlToFileSystemMapping="true"
/>

MVCの場合、次を試すことができます

using System.Web.Helpers;

[HttpPost]
[ValidateInput(false)]
public ViewResult Edit(ContentTemplateView contentTemplateView)
{
    FormCollection collection = new FormCollection(Request.Unvalidated().Form);
于 2012-11-30T00:15:26.737 に答える