3

共有サーバーで ASP.NET MVC3 アプリケーションを実行しています。サーバーに SSL 証明書をインストールし、アプリケーションのすべてのコントローラーを RequireHTTPS で装飾しました。これは、暗号化されていないページが提供されないようにするためです (つまり、すべてのページが HTTPS 経由で提供されます)。

ただし、特定のページ (例: js、HTML エラー ページ) には、暗号化されていない (リクエストのホスト名に :80 を追加することにより) アクセスできます。確かに、私が話しているページは静的ですが、サイト内のすべてのページを保護して、暗号化されていないページがダウンロードされるのを防ぐにはどうすればよいですか? これは共有サイトであるため、IIS サーバーの設定にアクセスできませんが、HTTP ハンドラーまたは Rewrite URL モジュールを使用する方法はありますか (または、ファイル フォルダーにアクセス許可を直接設定できますか)?

情報をありがとう。

4

1 に答える 1

0

このようなアクションフィルター属性を使用します

public class RequireSSL : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpRequestBase req = filterContext.HttpContext.Request;
        HttpResponseBase res = filterContext.HttpContext.Response;

        //Check if we're secure or not and if we're on the local machine
        if (!req.IsSecureConnection && !req.IsLocal)
        {

            var builder = new UriBuilder(req.Url)

                              {
                                  Scheme = Uri.UriSchemeHttps,
                                  Port = 443
                              };
            res.Redirect(builder.Uri.ToString());
        }
        base.OnActionExecuting(filterContext);

    }


}

次に、この属性を使用してSecureControllerというベースコントローラーを作成しました

  [RequireSSL]
 public class SecureController : Controller
{

}

そうすれば、SSLになりたいコントローラーはすべてこのコントローラーを継承します。すべての「ページ」がコントローラーアクションによって返されるビューであることを確認する必要があるだけで、それが役立つことを願っています。必要に応じて、これは非常に簡単な変更になるはずです。

于 2012-10-31T14:21:56.057 に答える