1

httpリクエストを傍受し、クエリ文字列からパラメーターを取得し、いくつかのチェックを行い、パラメーターに基づいてリクエストをリダイレクトする単純なasp.net Webフォームページがあります。

最近、ログに HttpRequestValidationException エラーがあるようです。これは、取得する URL がエンコードされておらず、Request.Validation が true に設定されているためです。

今、私はこのエラーの発生を止めたいと思っていますが、それでもインジェクションから保護したいと思っています. Request.Validation をオフにして、何かを行う前に URL を単純にエンコードできると考えていました。これは有効な解決策ですか?また、どのタイプのエンコーディングを使用すればよいですか? HTMLエンコーディングまたはURLエンコーディング? HTMLエンコーディングはJavaScriptやSQLインジェクションから保護されないと思いますよね?

前もって感謝します。

4

1 に答える 1

0

今、私はこのエラーの発生を止めたいと思います

これをやめたい理由はありますか?これは良いことです。危険な要求がキャッチされたことを示しています。これらのログへのヒットを停止したい場合は、例外を飲み込んでみませんか?

これでうまくいきます (Global.asax):

void Application_Error(object sender, EventArgs e)
{

    Exception exc = Server.GetLastError();
    if(exc.GetType() == typeof(HttpRequestValidationException))
    {
        //ignore and don't write to log
    }

}

これには、他のすべての例外を引き続きログに記録できるという利点もあります。

于 2012-05-03T17:01:01.170 に答える