在 ASP.NET 中实施 HTTPS 站点范围
背景: 几个月前,实现了一个站点,其中所有请求都必须通过 HTTPS 发出。当时唯一可行的解决方案是在页面加载事件期间检查请求,并在必要时重定向到 HTTPS。
替代解决方案:
更可靠的方法是利用 HTTP 严格传输安全 (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 连接的优势,而基于代码的方法Global.asax.cs 仅在 ASP.NET 应用程序内处理重定向。因此,HSTS 是一种更全面且值得推荐的解决方案。
以上是如何在 ASP.NET 中安全地在站点范围内实施 HTTPS?的详细内容。更多信息请关注PHP中文网其他相关文章!