开启HSTS功能后您可以强制客户端使用HTTPS与服务器创建连接,帮助网站进行全局加密,降低第一次访问被劫持的风险。
前提条件
背景信息
HSTS(HTTP Strict Transport Security)是国际互联网工程组织IETE推行的Web安全协议,通过强制客户端(例如浏览器等)使用HTTPS与服务器创建连接,帮助网站进行全局加密。
当您的网站全站使用HTTPS后,需要将所有HTTP请求的301和302重定向到HTTPS。如果您在浏览器输入或直接单击HTTP链接,则服务器会将该HTTP请求的301和302重定向到HTTPS。该操作过程中请求可能被劫持,导致重定向后的请求未发送到服务器,该问题可以通过HSTS来解决。
HSTS是一个响应头,HSTS的响应头结构为:
Strict-Transport-Security: max-age=expireTime [; includeSubDomains] [; preload]
,具体参数说明如下表所示。
参数 | 说明 |
---|---|
Strict-Transport-Security | 在浏览器缓存的时间。浏览器处理域名的HTTP访问时,若该域名的Strict-Transport-Security没有过期,则在浏览器内部做一次307重定向到HTTPS,从而避免浏览器和服务器之间301和302重定向被劫持的风险。 |
max-age | HSTS Header的过期时间,单位为秒。 |
includeSubDomains | 可选参数。如果指定这个参数,说明该域名及其所有子域名均开启HSTS。 |
preload | 可选参数。当您申请将域名加入到浏览器的内置列表时需要使用preload列表。 |
说明
- HSTS生效前第一次需要将301和302重定向到HTTPS。
- HSTS响应头在HTTPS访问的响应中有效,在HTTP访问的响应中无效。
- HSTS仅对域名和403端口有效,对IP和其他端口无效。