1. ホーム
  2. asp.net-mvc

[解決済み] 危険な可能性のあるRequest.Pathの値がクライアントから検出されました(&)" の取得

2022-09-12 11:27:52

質問

レガシーコードの問題で、ランダムな URL をホームページへのリクエストであるかのようにサポートすることが必要になりました。URL の中には、エラーを生成する文字が含まれているものがあります。 "A potentially dangerous Request.Path value was detected from the client (&)" . このサイトは ASP.Net MVC 3 (C#) で書かれており、IIS 7.5 で動作しています。

以下は URL の例です...

http://mywebsite.com/Test123/This_&_That

私がどのようにキャッチオールルートをセットアップしているかは以下の通りです(特定のページをキャッチするために他のルートを持っています)...

routes.MapRoute(
    "Default", // Route name
    "{garb1}/{garb2}", // URL with parameters
    new { controller = "Website", action = "Home", garb1 = UrlParameter.Optional, garb2 = UrlParameter.Optional } // Parameter defaults
);

web.configファイルに以下のものを追加しました...。

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

また、URLを取得するアクションにValidateInput属性を追加しました...

public class WebsiteController : Controller
{
    [ValidateInput(false)]
    public ActionResult Home()
    {
        return View();
    }
}

でも、まだエラーが出ます。何か理由があるのでしょうか?私は何かを見逃したのでしょうか?現在、私はローカルの開発サーバー上で実行しているだけです (本番環境ではまだこれらの修正を試していません)。

どのように解決するのですか?

設定ファイルで以下のような設定をしてみてください。

<system.web>
    <httpRuntime requestPathInvalidCharacters="" requestValidationMode="2.0" />
    <pages validateRequest="false" />
</system.web>

URLのパスに「&」などの文字を使用しないようにし、アンダースコアに置き換えます。