HSTS是什么
HSTS 是 HTTP 严格传输安全(HTTP Strict Transport Security)的缩写,是一个Web安全策略机制。
HSTS最为核心的是一个HTTP响应头(HTTP Response Header),它可以让浏览器在接下来一段时间内,当前域名只能通过HTTPS进行访问,并且在浏览器发现当前连接不安全的情况下,强制拒绝用户的后续访问要求;如果浏览器接收到使用HTTP加载资源的请求,则必须尝试使用HTTPS请求替代;如果HTTPS不可用,则直接终止连接。
HSTS Header的语法如下:
Strict-Transport-Security: <max-age=>[; includeSubDomains][; preload]
其中:
max-age #是必选参数,是一个以秒为单位的数值,它代表着HSTS Header的过期时间,通常设置为1年,即31536000秒
includeSubDomains #是可选参数,如果包含它,则意味着当前域名及其子域名均开启HSTS保护
preload #是可选参数,只有当你申请将自己的域名加入到浏览器内置列表的时候才需要使用到它
设置HSTS
以请求 http://www.baidu.com为例,分为如下2个步骤说明:
1、客户端浏览器输入http://www.baidu.com时,默认走的是http协议;服务器收到客户端请求后,发现域名应该走https,于是个客户端返回重定向302,指向https://www.baidu.com/
2、客户端收到新的302重定向后,重新向https://www.baidu.com/发起请求,此时服务端响应头中包含Strict-Transport-Security,参数为max-age=172800(2天时间)
3、在max-age时间内,此浏览器请求www.baidu.com均会强制通过https访问。
查询域名是否支持HSTS
每个浏览器查询方式不一样,部分浏览器参如如下:
1、Edge浏览器:edge://net-internals/#hsts
2、Chrome浏览器:chrome://net-internals/#hsts
3、Firefox浏览器:
1)打开 Firefox 浏览器,在浏览器中输入“about:config”并回车
2)在搜索框中输入“security.mixed_content.block_active_content”,点击对话框中的“true”,将其设置为“false”
3)再次输入“security.mixed_content.block_display_content”,将其设置为“false”
4)关闭 Firefox 浏览器,并重新打开即可