美文网首页
HSTS-预加载列表

HSTS-预加载列表

作者: 靜默 | 来源:发表于2018-03-24 15:14 被阅读200次

HSTS

HSTS(HTTP Strict Transport Security)国际互联网工程组织IETF正在推行一种新的Web安全协议
HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。
中文名 HSTS 外文名 HTTP Strict Transport Security

1 概述

国际互联网工程组织IETF正在推行一种新的Web安全协议HTTP Strict Transport Security(HSTS)
采用HSTS协议的网站将保证浏览器始终连接到该网站的HTTPS加密版本,不需要用户手动在URL地址栏中输入加密地址。
该协议将帮助网站采用全局加密,用户看到的就是该网站的安全版本。
HSTS的作用是强制客户端(如浏览器)使用HTTPS与服务器创建连接。服务器开启HSTS的方法是,当客户端通过HTTPS发出请求时,在服务器返回的超文本传输协议响应头中包含Strict-Transport-Security字段。非加密传输时设置的HSTS字段无效。
比如,https://xxx 的响应头含有Strict-Transport-Security: max-age=31536000; includeSubDomains。这意味着两点:
在接下来的一年(即31536000秒)中,浏览器只要向xxx或其子域名发送HTTP请求时,必须采用HTTPS来发起连接。比如,用户点击超链接或在地址栏输入 http://xxx/ ,浏览器应当自动将 http 转写成 https,然后直接向 https://xxx/ 发送请求。
在接下来的一年中,如果 xxx 服务器发送的TLS证书无效,用户不能忽略浏览器警告继续访问网站

2 作用

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字段,用户将不再允许忽略警告。

3 不足

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

4 浏览器支持

Chromium和Google Chrome从4.0.211.0版本开始支持HSTS
Firefox 4及以上版本
Opera 12及以上版本
Safari从OS X Mavericks起
Internet Explorer从Windows 10技术预览版开始支持,之后微软又向IE11用户推送了支持HSTS的更新

5 Linux系统WEB服务器实现方法

实现HSTS示例: 
vim /etc/httpd/conf/httpd.conf
    设置跳转的重定向,浏览器会记住,记住多长时间
    Header always set Strict-Transport-Security "max-age=15768000"
    启用跳转功能 
    RewriteEngine on
    启用的跳转规则 
    RewriteRule ^(/.*)$  https://%{HTTP_HOST}$1 [redirect=302] 

相关文章

  • HSTS-预加载列表

    HSTS HSTS(HTTP Strict Transport Security)国际互联网工程组织IETF正在推...

  • 预加载与智能预加载 (VIA)

    预加载与智能预加载(iOS) 网络与性能 预加载无限滚动列表Threshold惰性加载智能预加载 总结 前两次的分...

  • iOS 开发 列表预加载

    最近增加了一个小需求,就是部分页面上拉加载的时候添加“预加载”功能,类似于上图中豆瓣的这样,其实这个逻辑很简单,就...

  • iOS 预加载列表数据

    预加载(TableView或者CollectionView):在用户阅读了最新页码数据的70%时(根据实际情况调节...

  • 图片预加载

    背景 利用图片的预加载技术获得更好的用户体验 什么是有序预加载和无序预加载 jQuery插件的写法 图片预加载,预...

  • 如何获取WebView内容高度

    序言 最近项目需求中需要实现WebView显示内容,下方显示评论列表,列表还可以分页加载。我最近做了技术预研,难度...

  • Fluid 配置高阶调优

    整理的实践调优列表: 设置 AlluxioRuntime 的属性 数据预加载 Master 高可用模式 开启 Fu...

  • iOS 实现简单的列表预加载

    在大部分 App 中,在有 feeds 流之类列表的地方,由于后端数据一般采用分页加载,为了用户体验需要做预加载。...

  • app提速:通过预加载数据提高视图显示速度

    通过预加载数据提高视图显示速度 1. 现状 以查看用商品情为例,在商品列表视图,点击列表后,进入商品详情视图。商品...

  • js-事件委托&图片预加载

    事件委托 图片预加载 吸顶条 图片预加载

网友评论

      本文标题:HSTS-预加载列表

      本文链接:https://www.haomeiwen.com/subject/vkvzfftx.html