求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

變更

前往: 導覽搜尋

HTTP強制安全傳輸技術

移除 5,110 位元組, 1 年前
清空页面
{| class="wikitable" style="float:right; margin: -10px 0px 10px 20px; text-align:left"
|<center>'''HTTP強制安全傳輸技術'''<br><img src="https://cdn0.techbang.com/system/images/413559/original/6a577910b3bc3b2b3c6259488a755242.jpg?1506588127" width="280"></center><small>[https://www.techbang.com/posts/54089-google-expanding-the-scope-of-hsts-to-ensure-more-of-its-site-security 圖片來自techbang]</small>
|}
'''HTTP严格传输安全'''('''H'''TTP '''S'''trict '''T'''ransport '''S'''ecurity,縮寫:'''HSTS''')是一套由[[互联网工程任务组]]<ref>[https://www.isc.org.cn/newgtld/zyjgjs/listinfo-19219.html 互联网工程任务组],isc.org</ref> 发布的[[互联网]]安全策略机制。[[网站]]可以选择使用HSTS策略,来让[[浏览器]]强制使用[[超文本传输安全协议|HTTPS]]与网站进行通信,以减少[[会话劫持]]风险。
 
其[[徵求修正意見書]]文件编号是RFC 6797,发布于2012年11月。
 
==历史==
HSTS的雏形来自于2008年4月在[[北京]]召开的第十七届国际万维网大会|International World Wide Web Conference上柯林·杰克逊(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日,这三位作者经由[[互联网工程任务组]]发布了首版互联网草案|Internet Draft,"HTTP Strict Transport Security"。
 
2012年10月2日,互联网工程指导组|Internet Engineering Steering Group批准了将第14版HSTS草案发布为RFC的请求。
 
2012年11月19日,互联网工程任务组发布RFC 6797。
 
==作用==
HSTS可以用来抵御SSL剥离攻击。SSL剥离攻击是[[中间人攻击]]的一种,由Moxie Marlinspike|Moxie Marlinspike|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字段无效。
 
比如,https://example.com/ 的响应头含有Strict-Transport-Security: max-age=31536000; includeSubDomains。这意味着两点:
#在接下来的31536000秒(即一年)中,浏览器向example.com或其子[[域名]]发送HTTP请求时,必须采用HTTPS来发起连接。比如,用户点击[[超链接]]或在地址栏输入 http://www.example.com/ ,浏览器应当自动将 http 转写成 https,然后直接向 https://www.example.com/ 发送请求。
#在接下来的一年中,如果 example.com 服务器发送的TLS[[数字证书|证书]]无效,用户不能忽略浏览器警告继续访问网站。
 
== 參考文獻 ==
{{reflist}}
[[Category: 310 數學總論]]
5,000
次編輯