全栈日课:使用HSTS协议强制浏览器使用HTTPS协议访问网站

作者 : 开心源码 本文共1011个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共125人阅读

大家都知道网站启用SSL数字证书后使用HTTPS协议可以保证服务器与浏览器端数据加密,但与此同时不可避免另外一个问题,总存在部分客户会直接输入域名的方式访问网站,默认浏览器是使用HTTP协议访问网站的,此时即使网站启用了SSL数字证书,此时客户与服务器端的数据交互依然使用的是明文传输方式,客户数据得不到保护,由于SSL数字证书没有生效。

可能你会说那不如直接关闭80端口吧(好吧,假如你是API等后端服务大可不必考虑前端客户访问的问题)或者HTTP访问的时候直接跳转到HTTPS协议吧(直接跳转其实也存在『中间人』攻击风险),其实这个问题有更好的方案,这就是下面要详情的

HSTS(HTTP Strict Transport Security),它是一个Web安全策略机制(web security policy mechanism),它通过服务器为HTTP响应添加如下一个Header 来让浏览器强制使用HTTPS与网站进行通信,以减少会话劫持风险:

Strict-Transport-Security:max-age=63072000; includeSubdomains; preload

只需在服务器返回给浏览器的响应头中,添加 Strict-Transport-Security这个HTTP Header 浏览器都将直接强制性的发起HTTPS请求,现在访问机制如下

全栈日课:使用HSTS协议强制浏览器使用HTTPS协议访问网站

HSTS Header max-age参数为有效期,在有效期内,浏览器只需向xxx或者其子域名发送HTTP请求时,必需采用HTTPS来发起连接。

通常假如由于过期或者其余起因导致SSL证书失效的时候,浏览器会提醒我们证书失效并提醒风险,但我们依然能够访问网站,假如使用了HSTS后则服务器将严格禁止继续访问,提醒如下

全栈日课:使用HSTS协议强制浏览器使用HTTPS协议访问网站

不足和缺陷

至此,你可能会发现,HSTS协议其余还是有他的缺陷,即可使用户初次访问的时候仍然要借助HTTP协议返回HSTS Header,这将仍然会产生一次中间人攻击风险。

Preload List

针对上面的攻击,HSTS也有应对办法,那就是在浏览器里内置一个列表,只需是在这个列表里的域名,无论何时、何种情况,浏览器都只使用HTTPS发起连接。这个列表由Google Chromium维护,FireFox、Safari、IE等主流浏览器均在使用。

可以在HSTS Preload List的官网上(https://hstspreload.org)提交申请,或者者理解更多详细的内容。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » 全栈日课:使用HSTS协议强制浏览器使用HTTPS协议访问网站

发表回复