我们有一个ASP.NET网站托管在Azure。
在此之前,我们实现了以下重写规则以强制HTTPS:
<rules>
<rule name="Redirect to https">
<match url="(.*)"/>
<conditions>
<add input="{HTTPS}" pattern="Off"/>
<add input="{REQUEST_METHOD}" pattern="^get$|^head$|^post$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/>
</rule>
</rules>我们现在通过以下规则(来自本指南)介绍HSTS:
<outboundRules>
<rule name="Add Strict-Transport-Security only when using 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; includeSubdomains; preload" />
</rule>
</outboundRules>我们需要这两种规则,还是可以删除HTTPS规则,而只有HSTS规则?
发布于 2017-06-20 09:40:07
不,你两者都需要。
HSTS只应应用于根据规范保护请求。将其应用于不安全的请求是没有意义的,因为中间的人可以直接删除标题。
如果请求与HTTP一起出现,则必须首先将它们重定向到HTTPS。然后在响应中返回HSTS头。
引用规范:https://www.rfc-editor.org/rfc/rfc6797#section-7.2
HSTS主机不能在通过非安全传输传送的HTTP响应中包含STS标头字段。
https://stackoverflow.com/questions/44649334
复制相似问题