欢迎光临
专注android技术,聚焦行业精粹,传扬中国传统文化,我们一直在努力

什么是HSTS以及它如何保护来自黑客的HTTPS攻击?

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

什么是HSTS,它如何帮助确保您的网站安全?

1、什么是HTTPS?

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

此加密有助于保护您免受中间人攻击(MITM)中的数据窃取。 增加的安全层也有助于提高您网站的声誉。 实际上,添加SSL证书非常简单,许多Web主机默认将其免费添加到您的站点! 也就是说,HTTPS仍然存在HSTS可以帮助修复的一些漏洞。

2、什么是HSTS

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

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

虽然HSTS政策已经存在了一段时间,但它仅在2016年7月由谷歌正式推出。这可能就是为什么你还没有听说过它。

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

3、什么是SSL剥离?

尽管HTTPS是HTTP的一个巨大改进,它不会被黑客攻击。 而对于使用重定向将用户从HTTP发送到其网站的HTTPS版本的网站,SSL剥离是一种非常常见的MITM攻击。

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

  1. 用户在其浏览器的地址栏中键入google.com。
  2. 浏览器最初会尝试将http://google.com加载为默认值。
  3. “Google.com”设置为301永久重定向到https://google.com。
  4. 浏览器会看到重定向并加载https://google.com。

通过SSL剥离,黑客可以在步骤3和步骤4之间的时机来阻止重定向请求并阻止浏览器加载网站的安全(HTTPS)版本。 当您访问未加密的网站版本时,您输入的任何数据都可能被盗。

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

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

4、如何启用HSTS停止SSL剥离?

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

即使是HSTS也存在不安全的方面,那就是用户的浏览器必须至少看一次HSTS的header信息才能利用它进行接下来的访问。 这意味着他们必须至少进行一次HTTP> HTTPS流程,这使他们在第一次访问启用HSTS的网站时容易受到攻击。

为了解决这个问题,Chrome会预加载启用了HSTS的网站列表。 如果用户符合所需(简单)要求,则可以将自己已启用HSTS的网站提交到预加载列表

添加到此预加载列表中的网站将会被硬编码到Chrome更新的未来版本中。 它可确保在Chrome的更新版本中访问启用HSTS功能的网站的每个人都能保持安全。

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

5、如何在您的网站上启用HSTS

要在您的网站上启用HSTS,您首先需要拥有有效的SSL证书。 如果您在没有启用HTTPS的情况下启用HSTS,则任何访问者都无法访问您的网站,因此请确保您的网站和所有子网域都在使用HTTPS,然后再继续操作。

启用HSTS非常简单。 您只需要在网站上的.htaccess文件中添加header即可。 您需要添加的Header信息如下:

这会添加一年最长时间的Cookie访问时限(什么是Cookie?),其中包括您的网站和任何子域。 一旦浏览器访问了该网站,它将无法访问该网站的不安全HTTP版本持续一年时间。 确保此域名中的所有子域名都包含在SSL证书中,并启用了HTTPS。 如果您忘记了这一点,则在您修改.htaccess文件后将无法访问子域名。

缺少includeSubDomains选项的网站可以被利用通过允许子域名操作cookie来向访问者公开隐私造成隐私泄露。 然而启用includeSubDomains后,将无法进行这些与cookie相关的攻击。

注意:在添加一年最大时限之前,请先使用max-age = 300测试整个网站的最长时限为5分钟。

Google甚至建议您在实施两年最长期限之前使用一周或一个月的值来测试您的网站及其性能(流量)。

6、制作HSTS预载列表

到目前为止,您应该熟悉HSTS以及它对您的网站的重要性。 确保您的网站访问者在线安全应该是您的网站必须考虑的关键要素。

要符合Chrome和其他浏览器的HSTS预加载列表的标准,您的网站必须符合以下要求:

  1. 提供有效的SSL证书。
  2. 如果您正在侦听端口80,则在同一主机上从HTTP重定向到HTTPS。
  3. 所有子域名开启HTTPS。 特别是,如果存在该子域的DNS记录,则必须支持www.subdomain的HTTPS。
  4. 在主域名上为HTTPS请求提供HSTS的header:
  • max-age必须至少为31536000秒(1年)。
  • 必须指定includeSubDomains
  • 必须指定preload
  • 如果您要从HTTPS站点提供其他页面的重定向,则该重定向仍必须具有HSTS的header(而不是重定向到的页面)。

如果要将网站添加到HSTS预加载列表,请确保添加所需的预加载标记。 “preload”标记表示您希望将您的网站添加到Chrome的HSTS预加载列表中。 然后.htaccess中的响应头应该显示如下:

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

 

赞(1) 打赏
未经允许不得转载:花花鞋 » 什么是HSTS以及它如何保护来自黑客的HTTPS攻击?

评论 1

  1. #1

    Very good post. I’m dealing with many of these issues as well..

    fleck 5600 valve4年前 (2020-04-08)回复

国内精品Android技术社区

专注android技术,聚焦行业精粹,传扬中国传统文化,我们一直在努力

联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册