新闻资讯
看你所看,想你所想

HTTP严格传输安全协定

HTTP严格传输安全协定

HTTP严格传输安全协定(英语:HTTP Strict Transport Security,简称:HSTS),是一套由网际网路工程任务组发布的网际网路安全策略机制。网站可以选择使用HSTS策略,来让浏览器强制使用HTTPS与网站进行通信,以减少会话劫持风险。其徵求修正意见书档案编号是RFC 6797,发布于2012年11月。

基本介绍

  • 中文名:HTTP严格传输安全协定
  • 外文名:HTTP Strict Transport Security
  • 简称:HSTS
  • 性质:网际网路安全策略机制
  • 发布时间:2012年11月
  • 档案编号:RFC 6797

内容

HSTS的作用是强制客户端(如浏览器)使用HTTPS与伺服器创建连线。伺服器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在伺服器返回的超文本传输协定(HTTP)回响头中包含Strict-Transport-Security栏位。非加密传输时设定的HSTS栏位无效。
比如,https://example.com/ 的回响头含有Strict-Transport-Security: max-age=31536000; includeSubDomains。这意味着两点:
  1. 在接下来的31536000秒(即一年)中,浏览器向example.com或其子域名传送HTTP请求时,必须採用HTTPS来发起连线。比如,用户点击超连结或在地址栏输入 http://www.example.com/ ,浏览器应当自动将 http 转写成 https,然后直接向 https://www.example.com/ 传送请求。
  2. 在接下来的一年中,如果 example.com 伺服器传送的TLS证书无效,用户不能忽略浏览器警告继续访问网站。

历史

HSTS的雏形来自于2008年4月在北京召开的第十七届国际全球资讯网大会上柯林·杰克逊(Collin Jackson)和亚当·巴斯(Adam Barth)的题为“ForceHTTPS: Protecting High-Security Web Sites from Network Attacks”的演讲。他们的提议是使用“ForceHTTPS”Cookie来强制浏览器使用HTTPS。
2009年9月18日,他们和杰夫·霍奇斯(Jeff Hodges)发布了最初的草案,题目为"Strict Transport Security",这个草案基于ForceHTTPS,并有所修改。
2010年6月17日,这三位作者经由网际网路工程任务组发布了首版网际网路草案,"HTTP Strict Transport Security"。
2012年10月2日,网际网路工程指导组批准了将第14版HSTS草案发布为RFC的请求。
2012年11月19日,网际网路工程任务组发布RFC 6797。

作用

HSTS可以用来抵御SSL剥离攻击。SSL剥离攻击是中间人攻击的一种,由Moxie Marlinspike于2009年发明。他在当年的黑帽大会上发表的题为“New Tricks For Defeating SSL In Practice”的演讲中将这种攻击方式公开。SSL剥离的实施方法是阻止浏览器与伺服器创建HTTPS连线。它的前提是用户很少直接在地址栏输入https://,用户总是通过点击连结或3xx重定向,从HTTP页面进入HTTPS页面。所以攻击者可以在用户访问HTTP页面时替换所有https://开头的连结为http://,达到阻止HTTPS的目的。
HSTS可以很大程度上解决SSL剥离攻击,因为只要浏览器曾经与伺服器创建过一次安全连线,之后浏览器会强制使用HTTPS,即使连结被换成了HTTP。
另外,如果中间人使用自己的自签名证书来进行攻击,浏览器会给出警告,但是许多用户会忽略警告。HSTS解决了这一问题,一旦伺服器传送了HSTS栏位,将不再允许用户忽略警告。

不足

用户首次访问某网站是不受HSTS保护的。这是因为首次访问时,浏览器还未收到HSTS,所以仍有可能通过明文HTTP来访问。解决这个不足目前有两种方案,一是浏览器预置HSTS域名列表,Google Chrome、Firefox、Internet Explorer和Microsoft Edge实现了这一方案。二是将HSTS信息加入到域名系统记录中。但这需要保证DNS的安全性,也就是需要部署域名系统安全扩展。截至2016年这一方案没有大规模部署。
由于HSTS会在一定时间后失效(有效期由max-age指定),所以浏览器是否强制HSTS策略取决于当前系统时间。部分作业系统经常通过网路时间协定更新系统时间,如Ubuntu每次连线网路时,OS X Lion每隔9分钟会自动连线时间伺服器。攻击者可以通过伪造NTP信息,设定错误时间来绕过HSTS。解决方法是认证NTP信息,或者禁止NTP大幅度增减时间。比如Windows 8每7天更新一次时间,并且要求每次NTP设定的时间与当前时间不得超过15小时。

协定内容

HSTS协定的作用是强制客户端(如浏览器)使用HTTPS与伺服器建立连线。伺服器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在伺服器返回的HTTP头档案中包含Strict-Transport-Security栏位。非加密传输时设定的HSTS栏位无效。

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com