php - 如何在我的网站中实现 HSTS

标签 php http curl https hsts

我有一个网站(来自 godaddy 的域并托管在 hostgator 中)。当我手动更新证书时,我可以将我的网站重定向到 https,但它总是从谷歌搜索转到 http。在线搜索后,我了解到 Considering Strict-Transport-Security: max-age=15768000 as result of curl -i -L on target domain 将适用于我的需要,因为它会强制浏览器以 https 打开网站。但我对如何在我的网站上实现这一点感到困惑。

谁能帮我解决这个问题?

最佳答案

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

重定向。

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

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

谷歌搜索

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

说您可以通过多种方式将此事告诉 Google 以加快流程:

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

HTTP 严格传输安全 (HSTS)

这是一个高级主题,因此在您深入了解之前不推荐它。基本上它是一个 HTTP header ,您通过 https 发送回您的网页,告诉网络浏览器“嘿,我是一个仅限 https 的网站。从现在开始,自动将任何 http 请求自动转换为 https,之前您甚至把它们发给我”。

这是一个很好的安全性补充, 重定向之上,但重要的是它不会取代 对重定向的需要。重定向需要先到位才能将其发送到 https,此时您的 Web 服务器可以发送 HSTS HTTP header (浏览器将缓存该 header ,以便它知道下次更改为 HTTPS)。

要设置它,您需要像这样发送一个 HTTP header (但只能通过 https 请求)。

Strict-Transport-Security "max-age=16070400"

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

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

有关 HSTS 的更多信息,请参见此处: 301 Redirect and HSTS in .htaccess

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

关于php - 如何在我的网站中实现 HSTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45727909/

相关文章:

http - 在 firefox 中向 Rest Client 发送 post 请求

python - python -m http.server 可以配置为处理并发请求吗?

c++ - 7.36 重建后 libcURL 未解析的外部

PHP cURL 不起作用 - Windows 7 64 位上的 WAMP

PHP CURL 登录和下载文件代码不起作用

php - 通过 PHP 使用 sudo 执行 shell 命令

javascript - 使用AJAX并设置innerHTML安全吗?

php - 复杂的 MySQL 查询 : solution to work with views (datatables. ..)

php - 什么更好,是还是不是?

java - 更改 Apache CXF 中特定请求的客户端超时