您可能已经确保您的网站已启用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(临时)重定向基本上是这样的:<
通过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预加载列表的条件,您的网站必须满足以下要求:
- 最大寿命必须至少为31536000秒(1年)。
- 必须指定includeSubDomains指令。
- 必须指定preload指令。
- 如果您要从HTTPS站点提供其他重定向,则该重定向必须仍然具有HSTS标头(而不是其重定向到的页面)。
如果要将网站添加到HSTS预加载列表,请确保添加必需的预加载标签。 “预加载"选项表示您希望将您的网站添加到Chrome的HSTS预加载列表中。 .htaccess中的响应标头应如下所示:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
我们建议您将网站添加到hstspreload.org。这些要求非常容易满足,它将有助于保护您的网站的访问者,并有可能提高您网站的搜索引擎排名。