HTTP Strict Transport Security(简称HSTS)是一个安全协议,它旨在防止经过审查的不安全网站被注入恶意代码或窃取用户信息。通过绑定服务器鉴定到了有效的证书,它可以确保用户与主机之间的通信是加密过的,并且服务器必须支持HTTPS安全连接。接下来我们详细讲解HSTS的相关内容。
HSTS是什么?
HTTP Strict Transport Security(HSTS)是一个安全协议,它旨在确保用户始终使用HTTPS来连接网站。HSTS强制启用HTTP连接到HTTPS的重定向,从而防止中间人攻击以及SSL剥离攻击。HSTS使用一个HTTP响应头在对话过程中在客户端和服务器之间传递并实施。这个 HTTP响应头 (想要获取更好的HSTS策略,必须遵循HSTS的最佳实践)有一些预定义的策略,我们来看几个示例:
max-age=<seconds>
- 这会告诉 web 浏览器,在值为 seconds 的时间期限内,只要向某个域发出请求,总是使用 HTTPS,无论当前 HTTPS 是否可用。includeSubDomains
- 这将激活 HSTS 策略并应用到子域名,
实例:
示例 1:
在此示例中,max-age
未定义,默认情况下值为 1个月。如果在某个域中找不到 HSTS 策略,则会自动开启 一个 可用时间为 1 个月的策略。这意味着每次 web 浏览器向此域发出请求时,它都会使用 HTTPS。
Strict-Transport-Security: max-age
示例 2:
在下面的示例中,定义了 max-age 以及 includeSubDomains 控制:
Strict-Transport-Security: max-age=600; includeSubDomains
这意味着每次web浏览器向一个网站或其子域发出请求时,都将使用 HTTPS,时间为值为 600
秒。
HSTS的工作原理
HSTS 的工作原理基于以下两步:
- 服务器端向客户端返回包含 HSTS 头的 HTTPS 响应。
- 客户端缓存 HSTS 头中指定的“最长有效负载”。
当客户端试图通过 HTTP 访问该域时,它会被重定向到 HTTPS 连接,并使用模仿 HSTS 配置指定的长期有效连接。
可能情况:
- 如果缓存中存在强制使用 HTTPS 的有效条目,则浏览器将直接重定向到 HTTPS URL。
- 如果缓存中没有任何对于该域名的 HSTS 条目,使用 HTTP 时,将进行正常 HTTP 请求。
HSTS的使用场景
我们给出两个流行的方案来应用 HSTS:
流程一:
在网站服务器上部署 HTTPS。禁用 HTTP。这将从客户端中删除任何早期的证书信息,从而确保 HTTPS 永久正常工作。让我们看一下此配置标头示例:
```
Strict-Transport-Security: max-age=31536000; includeSubDomains
````
该示例最终将生效并强制执行 HTTPS/HTTP/0.9 协议,将 HTTP 流量重定向到 HTTPS。includeSubDomains 可以确保所有子域也保持安全。
流程二:
对于网站(如 Facebook 等)需要一段时间才能准备好 HTTPS,但它们将稍后过渡到 HTTPS。这些网站在使用 HSTS 时可以允许允许短暂的 HTTP 请求。这是有帮助的,以排查 P KI 中断问题。
参考中,当需要使用 HTTP 流量且哦有 HTTPS 失败时启用 HSTS。\Stict-Transport-Security:max-age=600,max-stale-seconds=3600;includeSubDomains
在这个示例中,max-age 置为 600s 、 max-stale-seconds 置为 3,600s,这意味在后者可以容错 60 分钟的服务中断时间。
总结
HSTS 是 HTTP 世界的一个关键安全协议。它为网站提供了强大的安全性。通过启用 HTTPS,HSTS 可以防止中间人攻击以及SSL剥离攻击,从而增强了对来自访问者的隐私和个人数据的保护。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:什么是HTTP Strict Transport Security(HSTS)? - Python技术站