我目前正在通过虚拟主机将 HTTP 重定向到 HTTPS,代码如下:
Redirect permanent / https://www.example.com/
我遇到的问题是当我检查它时https://asafaweb.com我收到以下警告:
您输入的地址使用 HTTP 方案发出请求,但随后被服务器重定向到 HTTPS 地址。
例如,查看谷歌,你会得到以下消息:
您输入的地址使用了 HTTP 方案,并且响应也采用了 HTTP 方案,因此此测试通过。
我不知道我做错了什么。如果这有关系的话,我还启用了 HSTS。
答案1
这很好、很正常而且在意料之中。
默认情况下,网络目前未加密(HTTP)。因此,当您在浏览器地址栏中输入 www.example.com 时,它将转到http://www.example.com代替https://www.example.com默认情况下。如果你是一个安全网站,你会将其重定向到https://www.example.com。
这意味着在一段(很短的)时间内,流量是未加密的。这样存在一些危险:
- 除非您用标志标记 cookie,否则 www.example.com 的所有 cookie 都将在第一次未加密的请求中发送
Secure
。 - 您可能会被重定向到另一个网站(http://www.evilexample.com) 代替https://www.example.com如果有人在中间监听并拦截初始重定向(中间人攻击 - MITM)
- MITM 攻击者可以删除重定向并让你继续http://www.example.com然后在你和之间来回传递数据https://www.example.com所以一切看起来都没问题,但完全未加密,所以,除非你碰巧看了浏览器 URL,否则你可能不会注意到它。
因此,理想情况下,您不会使用 HTTP 而直接使用 HTTPS。在某个时候,网络会翻转,首先尝试 HTTPS,然后在 HTTP 不起作用时返回 HTTP,但目前默认情况下是 HTTP。
所以这个网站基本上只是警告你这个事实。
你能对这个警告做什么?你无法做任何事情来消除这个警告 - 除非在 URL 开头输入 https:// 而不是 http://,这是解决这个问题的一种方法。因此,在提供你的 URL 或链接到它时,请使用 https://。
您还可以(并且应该!)在Secure
您不想通过 HTTP 读取的任何 cookie 上设置标志,但这对此网站警告没有帮助,但至少可以解决上述风险之一。
最后,您可以使用 HSTS,正如您所说。HSTS 允许您告诉浏览器您不想默认使用 HTTP,而只想使用 HTTPS。它的工作方式是,当您第一次通过 HTTPS 连接到网站时(无论是直接连接还是重定向后),网站会使用特殊的Strict-Transport-Security
HTTP 标头告诉浏览器您已将网站配置为返回仅有的将来使用 HTTPS - 即使用户忘记了方案(www.example.com),事实上,即使他们没有忘记方案,而是将其作为 HTTP(http://www.example.com)。因此,这种方式比较安全,但在第一次连接到网站之前,直到他们获得该标头,仍然处于危险之中(或者如果浏览器忘记了设置,Strict-Transport-Security
因为它只在您指定的时间内缓存)。因此,虽然这种方式很好,但它对这次扫描没有帮助。
你可以采取的下一步行动(请这样做不是采取这一步骤而不了解后果的另一种方法是使用此网站将此 HSTS 设置预加载到浏览器代码中:https://hstspreload.org/。这将保护首次访问(如果您使用的浏览器使用此预加载列表 - 大多数现代浏览器都这样做)。但是,这将阻止您的域使用 HTTP,因此如果您有任何未使用 HTTPS 的网站(例如http://blog.example.com, 或者http://intranet.example.com或者http://development.example.com)那么你就只能强迫自己升级它们了。说实话,我认为预加载对大多数网站来说都有些过度了。即使你确实进行了预加载,https://asafaweb.com/似乎没有使用预加载列表,所以你的意愿仍然收到警告。
总而言之,我最好的建议是留意警告,阅读他们提供的链接,了解警告的含义并尽可能采取缓解措施,然后继续前进:-)