![HTTP 严格传输安全 (HSTS)、Azure 和 HTTP 严格传输安全 IIS 模块](https://linux22.com/image/659904/HTTP%20%E4%B8%A5%E6%A0%BC%E4%BC%A0%E8%BE%93%E5%AE%89%E5%85%A8%20(HSTS)%E3%80%81Azure%20%E5%92%8C%20HTTP%20%E4%B8%A5%E6%A0%BC%E4%BC%A0%E8%BE%93%E5%AE%89%E5%85%A8%20IIS%20%E6%A8%A1%E5%9D%97.png)
问题:如何在 Azure 网站中正确安装和配置 HTTP 严格传输安全 (HSTS)?
显然,对于 IIS,使用的方法是安装此模块:http://hstsiis.codeplex.com/
问题是,根据文档,您需要在不同位置安装多个 .dll(HSTS-IIS-Module-2.0.0.msi)。不幸的是,这在 Azure 网站环境中似乎不可能实现(如何在 Azure 网站中安装 IIS 模块?)?使用虚拟机可能会有效,但我的问题针对的是常规 Azure 网站/Web 应用程序(ASP.NET MVC 5 应用程序)。
答案1
更新:
如果你正在运行 ASP.NET,你需要安装安全网。它将允许您配置 HSTS,以及 Content-Security-Policy 和其他与OWASP 安全标头项目。
Scott Hanselman 在他的博客中介绍了这个解决方案(来源在答案的底部)。
基本上,HSTS 只是一个 HTTP 标头。但您只想在使用 HTTPS 时发送它。这样,您的网站将在max-age
指定的时间内锁定在 HTTPS 中。
您的申请中应该包含以下内容web.config
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<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>
</system.webServer>
</configuration>