0

httpおよびhttpsポートを有効にしてIISに展開されたASP.Netアプリケーションを実装しました。これで、Web.Config値に基づいてHTTPリクエストを拒否する必要があります。この値がTrueに設定されている場合、エラーをスローするように、HTTPで送信されるリクエストを受け入れないようにする必要がありますInvalid Operation.. Try requesting with Secure connection。私が最初にしたことは、Global.asaxファイルでこれを以下のようにチェックすることです。

  if (Utilities.Utility.HttpsCheck)
    {
        if (!Request.IsSecureConnection)
        {
            Response.Write("Invalid Operation");
        }
    }

このメソッドでは、例外が発生しrequest is not available in this contextました。Requestこのエラーについてグーグルで検索したところ、ASP.NETのグローバルファイルでアクセスできないことがわかりました。

私が試した次の方法は、プロジェクトのすべてのページに上記のコードを追加し、リクエストを処理する前にこれを確認することです。しかし、このようにすることで、HTMLページへの要求を防ぐことを制御できなくなり、プロジェクトにもいくつかのhtmlページがあり、これらのファイルも制限する必要があります。

ページごとにコードを含めると、そのページにのみ適用されます。ただし、Webサイトにもいくつかの画像/ビデオファイルがあり、これらも制限する必要があります。

これを行うためのより良い方法はありますか?この点で私を助けてください。

前もって感謝します。

4

3 に答える 3

0

HTTP モジュールを実装して、構成値に基づいて Web サイトの HTTP アクセスを制限しました。これを使用することで、HTTPP アクセスを画像ファイルと html ページにも制限することができます。ここに私のモジュールコードがあります:

public void Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
        }

        public void context_BeginRequest(Object source, EventArgs e)
        {
            //Code to reject the HTTP requests on basis of Config Value
            HttpApplication application = (HttpApplication)source;
            HttpContext context = application.Context;

            if (context != null)
            {
                if (Utilities.Utility.HttpsCheck)
                {
                    if (!context.Request.IsSecureConnection)
                    {
                        context.Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest;
                        context.Response.StatusDescription = "Secure connetion required";
                        context.Response.End();
                    }
                }
            }
        }
于 2012-10-25T06:34:29.757 に答える
0

https のみを受け入れるように IIS を構成できます。HTTP リクエストは自動的にリダイレクトされます。IIS を構成する方法の例を次に示します。 http://support.microsoft.com/kb/324069

お役に立てれば

于 2012-10-16T11:35:19.270 に答える
0

非常に簡単な方法は、Page クラスをサブクラス化し、サブクラス化されたページに条件を適用することです。制限付きのサブクラスを 1 つ、非制限用のサブクラスを 1 つ持つことができます。制限されたページは、Web 構成パラメーターの値にアクセスし、必要に応じてリダイレクトできます。

public class HttpsPage : Page {


protected override void OnLoad(..)
{
 if (Utilities.Utility.HttpsCheck)
    {
        if (!Request.IsSecureConnection)
        {
            Response.Redirect(your-url);
        }
    }
}
}

それはあまりにもラフです。これはあなたの質問に対するコードベースの回答ですが、「正確な」要件が何であるかに応じて、20 のより良い方法があります。

率直に言って、自分が何をしているのかよくわからない場合は、安全なソケットが必要だと感じるものを Web に配置することについて、非常に慎重に検討してください。

于 2012-10-16T11:36:23.367 に答える