浅析HSTS

浅析HSTS

1、HSTS是什么?

HSTS全称:HTTP Strict Transport Security,意译:HTTP严格传输安全,是一个Web安全策略机制。

chrome

2、HSTS解决什么问题?

它解决的是:网站从Http转跳到Https时,可能出现的安全问题。json

通常从Http跳转Https的流程:
浏览器

Client从Http切换到Https前是明文传输,所以是能够被Man-In-The-Middle劫持的,以下流程:


安全

3、HSTS如何解决?

要解决从Http切换到Https被劫持的问题,只要一开始就没有Http请求便可,流程以下:


网站

4、HSTS如何知道,哪些请求该转为Https,哪些不应转?

方案1. 最近一次请求的Https响应中(Response)中,带上HSTS Header:

Strict-Transport-Security: <max-age=>[; includeSubDomains][; preload]
  • max-age:
    • 必选,单位:秒。
    • 意义:HSTS header过时时间,通常设置为1年,即31536000秒。而每次Response Header都带上HSTS Header,则可不断刷新其过时时间。
  • includeSubDomains:
    • 可选。
    • 意义:须要开启HSTS的域名/子域名。
  • preload:
    • 可选
    • 意义:当加入了浏览器内置Preload List时才须要设置该项。

方案2. HSTS Preload List

方案1仍是有个漏洞:code

  • 若是第一次访问网站A就被劫持了,哪方案1岂不白搭?
  • 清Cookies或者HSTS Header过时了,下次访问岂不又风险重重?

基于以上问题,就须要方案2(HSTS Preload List):blog

官方说明:

This is a list of sites that are hardcoded into Chrome as being HTTPS only.
HSTS Preload List是一个站点列表,它被hardcode写入Chrome中,列表中的站点将会默认使用 HTTPS 进行访问。

Most major browsers (Chrome, Firefox, Opera, Safari, IE 11 and Edge) also have HSTS preload lists based on the Chrome list. (See the HSTS compatibility matrix.)    
主流浏览器(Firefox, Opera, Safari, IE 11 and Edge)都有和Chrome同样的HSTS Preload List。

这样,就直接从源头上封死Http转跳Https时被劫持的可能性。

get

5、其余相关:

相关文章
相关标签/搜索