如何在我的网站中实施 HSTS

Saj*_*abu 1 php https curl http hsts

我有一个网站(来自godaddy 的域并托管在hostgator 中)。当我手动更新证书时,我可以将我的网站重定向到 https,但它总是从谷歌搜索转到 http。在线搜索后,我知道考虑到目标域的Strict-Transport-Security: max-age=15768000结果curl -i -L将满足我的需要,因为它会强制浏览器以 https 打开网站。但我对如何在我的网站上实现这一点感到困惑。

谁可以帮我这个事 ?

Bar*_*ard 5

不确定这是否适合 Stackoverflow。再说一次,它涵盖了太多主题,以至于它也不适用于任何其他 StackExchange 站点。所以无论如何都会尝试回答。

重定向。

“我可以将我的网站重定向到 https”是什么意思?您应该将您的网站重定向到 https ,现在您已经完成了设置的麻烦,所以您正在这样做吗?或者你能同时访问http和https吗?如果是这样,即使用户设置了 http,也要找出如何强制使用 https。

这是在您的 Web 服务器上使用重定向规则设置的。不确定您是否可以直接访问您的配置(例如,如果使用 Apache,则为 .htaccess 文件)或要求您的主机提供商为您进行设置。

谷歌搜索

关于 Google 搜索,一旦您设置了重定向,Google 需要一些时间来识别这一点并更新其搜索索引中的链接以显示页面的 https 版本。

说有一些方法可以告诉谷歌这个加快这个过程:

  • 您是否强制重定向到 https?如果不是,Google 将根据多种因素决定显示哪个站点(http 或 https)。
  • 您是否有站点地图并且是否将这些链接更新为 https?
  • 您的任何页面的 HTML 中是否有 rel="canonical" 设置并且是否设置为 https 版本?例如,如果您同时允许页面的 http 和 https 版本(不推荐),这会告诉 Google 哪个是页面的真实版本。
  • 您是否在 Google Search Console 中注册了您网站的 https 版本?如果是这样,那里有任何错误吗?您还可以在此处启动重新索引请求。
  • 您是否将所有内部链接设置为 https 或更好的相对链接。
  • 您能否将任何外部链接更新为 https 而不是 http。

HTTP 严格传输安全 (HSTS)

这是一个高级主题,因此在您对它有更多了解之前,真的不会推荐它。基本上它是一个 HTTP 标头,您通过 https 与您的网页一起发回,以告诉网络浏览器“嘿,我只是一个 https 站点。从现在开始,您将它们发送给我之前,自动将任何 http 请求自动转换为 https ”。

这是重定向之上的一个很好的安全补充但至关重要的是,它并不能取代重定向的需要。重定向首先需要到位才能将其发送到 https,此时您的 Web 服务器可以发送 HSTS HTTP 标头。

要设置它,您可以发送这样的 HTTP 标头(但只能通过 https 请求)。

Strict-Transport-Security "max-age=16070400"
Run Code Online (Sandbox Code Playgroud)

这可以在您的网络服务器中设置,或者在您的 php 文件中设置,或者您可以通过任何其他方式发送 HTTP 标头。

请注意,我们将阻止您的网站通过 http 访问,因此如果您出于任何原因决定关闭 https,那么您基本上已将您的网站阻止了最长使用时间的任何浏览器缓存该设置。

有关 HSTS 的更多信息,请参见此处: .htaccess 中的 301 重定向和 HSTS

但我真的不认为这就是你在这里寻找的东西。它告诉网络浏览器(如谷歌浏览器)强制使用 https 并且与搜索引擎(如谷歌搜索)无关,因为目前他们忽略了这个 Header。