什么是HSTS?它如何保护HTTPS免受黑客攻击?

您可能已经确保您的网站已启用SSL,并且浏览器中漂亮的安全挂锁为绿色。但是,您可能已经忘记了HTTP的小安全人员HTTP Strict Transport Security(HSTS)。

什么是HSTS,它如何帮助保持站点安全?

什么是HSTS? HTTPS?

安全超文本传输​​协议(HTTPS)是网站(HTTP)的安全版本。加密使用安全套接字层(SSL)协议启用,并通过SSL证书进行验证。当您连接到HTTPS网站时,在网站和用户之间传输的信息将被加密。

此加密有助于保护您免遭中间人攻击(MITM)盗窃数据。额外的安全保护层还可以稍微改善网站的声誉。实际上,添加SSL证书非常简单,默认情况下,许多Web主机会免费将其添加到您的站点中!也就是说,HTTPS仍然存在HSTS可以帮助修复的一些缺陷。

什么是HSTS?

HSTS是响应标头,它通知浏览器只能通过HTTPS访问启用的网站。 。这会迫使您的浏览器只能访问该网站的HTTPS版本及其上的任何资源。

您可能不知道,即使您已正确设置SSL证书并为您的网站启用了HTTPS网站,该HTTP版本仍然可用。即使您已使用301永久重定向设置了转发,也是如此。

尽管HSTS政策已经存在了一段时间,但Google于2016年7月才正式推出。这可能就是为什么您还没有听说过。

启用HSTS将停止SSL协议攻击和cookie劫持,这是启用SSL的网站中的另外两个漏洞。除了使网站更安全之外,HSTS还可以通过删除加载过程中的步骤来使网站加载更快。

什么是SSL剥离?

尽管HTTPS是一项巨大的改进从HTTP上获取,它不会被黑客入侵。 SSL剥离是网站上非常常见的MITM骇客,它使用重定向将用户从HTTP发送到网站的HTTPS版本。

301(永久)和302(临时)重定向基本上是这样的:<

  • 用户在其浏览器的地址栏中键入 google.com
  • 浏览器最初尝试加载 http://google.com
  • 设置为“ Google.com",并具有301个永久重定向到 https://google.com
  • 浏览器会看到重定向并加载 https://google.com
  • 通过SSL剥离,黑客可以使用第3步到第4步之间的时间来阻止重定向请求并停止浏览器加载网站的安全(HTTPS)版本。然后,当您访问网站的未加密版本时,输入的任何数据都可能被盗。

    黑客还可以将您重定向到您尝试访问的网站的副本,并捕获您的所有输入的数据,即使它看起来很安全。

    Google已在Chrome中实施了一些步骤来停止某些类型的重定向。但是,从现在开始,默认情况下您应该对所有网站启用HSTS。

    启用HSTS如何停止SSL剥离?

    启用HSTS会强制浏览器加载网站的安全版本,并忽略任何重定向和其他任何打开HTTP连接的调用。这就关闭了301和302重定向存在的重定向漏洞。

    甚至对HSTS也有不利的一面,那就是用户的浏览器必须至少看到一次HSTS标头才能使用利用它来以后的访问。这意味着他们将必须至少经历一次HTTP> HTTPS流程,从而使他们在首次访问启用了HSTS的网站时容易受到攻击。

    为了解决这个问题,Chrome会预先加载一系列启用了HSTS。如果符合要求(简单)的条件,用户可以将启用HSTS的网站提交到预加载列表中。

    添加到此列表中的网站将被硬编码到以后的Chrome更新版本中。这样可以确保在更新版本的Chrome中访问启用了HSTS的网站的所有人都将保持安全。

    Firefox,Opera,Safari和Internet Explorer都有自己的HSTS预加载列表,但它们基于Chrome列表

    如何在网站上启用HSTS

    要在网站上启用HSTS,您首先需要具有有效的SSL证书。如果没有启用HSTS,则任何访问者都无法访问您的网站,因此在继续操作之前,请确保您的网站和任何子域都可以通过HTTPS进行操作。

    启用HSTS非常容易。您只需要在网站上的.htaccess文件中添加标题即可。您需要添加的标题是:

    Strict-Transport-Security: max-age=31536000; includeSubDomains

    这将添加一个最长使用期限的cookie(什么是cookie?),其中包括您的网站以及任何子域。浏览器访问该网站后,一年内将无法访问该网站的不安全HTTP版本。确保此域上的所有子域都包含在SSL证书中,并且启用了HTTPS。如果您忘记了这一点,则在保存.htaccess文件后将无法访问子域。

    缺少 includeSubDomains 选项的网站可能会通过允许子域将访问者暴露在隐私泄漏中操作Cookie。启用 includeSubDomains 后,这些与Cookie相关的攻击将无法进行。

    注意:在添加一年最大年龄之前,请测试您的整个网站的最大使用时间为五分钟,首先使用: max-age = 300;

    Google甚至建议您在一周内测试您的网站及其性能(流量) ,以及实现两年最大年龄之前的一个月价值。

    Five minutes: Strict-Transport-Security: max-age=300; includeSubDomainsOne week: Strict-Transport-Security: max-age=604800; includeSubDomainsOne month: Strict-Transport-Security: max-age=2592000; includeSubDomains

    制作HSTS预载列表

    现在,您应该熟悉HSTS及其重要性供您的网站使用。确保网站访问者的在线安全是您网站计划的关键要素。

    要符合Chrome和其他浏览器使用的HSTS预加载列表的条件,您的网站必须满足以下要求:

  • 提供有效的SSL证书。
  • 如果在端口80上侦听,则从HTTP重定向到同一主机上的HTTPS。
  • 通过HTTPS提供所有子域的服务。特别是,如果存在该子域的DNS记录,则必须为 www.subdomain 支持HTTPS。
  • 在基域上为HTTPS请求提供HSTS标头:
    • 最大寿命必须至少为31536000秒(1年)。
    • 必须指定includeSubDomains指令。
    • 必须指定preload指令。
    • 如果您要从HTTPS站点提供其他重定向,则该重定向必须仍然具有HSTS标头(而不是其重定向到的页面)。
    • 如果要将网站添加到HSTS预加载列表,请确保添加必需的预加载标签。 “预加载"选项表示您希望将您的网站添加到Chrome的HSTS预加载列表中。 .htaccess中的响应标头应如下所示:

      Strict-Transport-Security: max-age=63072000; includeSubDomains; preload

      我们建议您将网站添加到hstspreload.org。这些要求非常容易满足,它将有助于保护您的网站的访问者,并有可能提高您网站的搜索引擎排名。

  • 标签: HSTS HTTPS 在线安全性 SSL