ホームページ >バックエンド開発 >C#.Net チュートリアル >asp.net の「潜在的に危険な Request.Form 値がクライアントから検出されました」エラーを解決する
フォームを送信すると、asp.net は「潜在的に危険な Request.Form 値がクライアントから検出されました (...)」というプロンプトを表示します。 asp.net の要求検証機能は、XSS 攻撃に対して一定レベルの保護を提供します。asp.net の要求検証はデフォルトで有効になっています。これにより、.net のさまざまなバージョンに対応したソリューションが提供されます。
asp.net 2.0 の通常の解決策
解決策 1:
次のように、.aspx ファイルのページ項目に ValidateRequest="false" を追加します:
5875724147862256ec8bf619fa6e6cb1
オプション 2:
web.config 構成ファイルを変更します
<system.web> <pages validateRequest="false" > </pages> </system.web>
概要: validateRequest わかっているこの文は、これは、ASP.NET が 8e99a69fbe029cd4e2b854e244eab143bold128dba7a3a77be0113eb0bea6ea0a5d0 などのタグを含む値を送信するときにエラーを報告しないことを意味します。このオプションは test.aspx ページのみを変更し、オプション 2 を使用すると、ソリューション全体が ValidateRequest="false" になるため、ここではオプション 1 を使用することをお勧めします。
Asp.net 4.0ソリューション
4.0と2.0の方法は同じですが、.Net Framework 4.0からasp.netはリクエストパラメータのセキュリティを強制的に検出し始め、変更することで2.0を復元できることに注意してくださいモデルの Web.config バージョン。
方法は以下の通りです
Web.configを変更し、requestValidationMode="2.0"属性値を追加します
<system.web> <httpRuntime requestValidationMode="2.0" /> <pages validateRequest="false"></pages> </system.web>
4.0には追加のrequestValidationModeがありますが、これは何を意味しますか?
requestValidationModeには2つの値があります:
2.0はWebページのリクエスト検証のみを有効にします。有効か無効かは validateRequest によって異なります。
4.0 デフォルト。あらゆる HTTP リクエストでリクエストの検証が可能になります。これは Web ページだけでなく Cookie なども意味します。 validateRequest 値に関係なく、有効になりました。
requestValidationMode="4.0" が強制的に有効になっているため、.NET Framework 4.0 では validateRequest を設定するだけではリクエスト検証をオフにできないことがわかります。また、requestValidationMode を 2.0 に設定する必要があります。