ASP.NET でサイト全体に HTTPS を適用する
背景: 数か月前、あるサイトが実装されました。すべてのリクエストは HTTPS 経由で行う必要がありました。当時の唯一の実行可能な解決策は、ページ読み込みイベント中にリクエストをチェックし、必要に応じて HTTPS にリダイレクトすることでした。
代替解決策:
より堅牢なアプローチは次のとおりです。 HTTP Strict Transport Security (HSTS) を利用します。 HSTS を実装すると、セキュリティで保護されていない HTTP リクエストを防止し、指定した期間の HTTPS 接続を強制できます。
Web.config 構成:
ASP.NET で HSTS を構成するには、次のコードを
<rewrite> <rules> <rule name="HTTP to HTTPS redirect" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" /> </rule> </rules> <outboundRules> <rule name="Add Strict-Transport-Security when HTTPS" enabled="true"> <match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" /> <conditions> <add input="{HTTPS}" pattern="on" ignoreCase="true" /> </conditions> <action type="Rewrite" value="max-age=31536000" /> </rule> </outboundRules> </rewrite>
Global.asax.cs コード (代替方法):
HSTS が推奨されるアプローチですが、代替ソリューション次のコードを Application_BeginRequest イベントに追加する必要があります。 Global.asax.cs:
protected void Application_BeginRequest(Object sender, EventArgs e) { if (HttpContext.Current.Request.IsSecureConnection.Equals(false) && HttpContext.Current.Request.IsLocal.Equals(false)) { Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] + HttpContext.Current.Request.RawUrl); } }
比較:
HSTS を使用すると、ブラウザ レベルで HTTPS 接続を保護できるという利点がありますが、HSTS のコードベースのアプローチでは、 Global.asax.cs は、ASP.NET アプリケーション内でのみリダイレクトを処理します。したがって、HSTS はより包括的で推奨されるソリューションです。
以上がASP.NET でサイト全体に HTTPS を安全に適用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。