众所周知,https协议的浏览是无法被篡改/劫持的,这得益于不对称加密的难以破击。
一般而言,我们可以通过https协议的流量强加密特性来规避http流量在网络上明文传输所引发的问题,比如说运营商的流量劫持或者中间人攻击等问题。
但是,我们大多时候用户在访问一个网页的时候多半不会主动输入https的协议,而是直接输入域名来访问网站,后端网关的配置多半是这样的:
1 | server { |
那么,这就出现了从http流量向https流量跳转的过程,如果这个过程被劫持并且内容被篡改,那么这个网站的访问就永远无法处于https的保护之下了。
这个时候就轮到HSTS出场了,HSTS全称是HTTP Strict Transport Security,可以强制浏览器在指定的时间段之内只进行https的访问,并且不可跳过证书错误。
1 | add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; |
在nginx的配置当中添加这个响应头就可以了!
参考资料: