你所不知道的正规网赌平台 HSTS

启用 HSTS

HSTS,HTTP Strict Transport
Security,简单说就是强制客户端使用 HTTPS 访问页面。其原理就是:

  • 在服务器响应头中添加  Strict-Transport-Security ,可以设置  max-age
  • 用户访问时,服务器种下这个头
  • 下次如果使用 http 访问,只要 max-age
    未过期,客户端会进行内部跳转,可以看到 307 Redirect Internel
    的响应码
  • 变成 https 访问源服务器

这个过程有效避免了中间人对 80
端口的劫持。但是这里存在一个问题:如果用户在劫持状态,并且没有访问过源服务器,那么源服务器是没有办法给客户端种下
Strict-Transport-Security  响应头的(都被中间人挡下来了)。

启用 HSTS 不仅仅可以有效防范中间人攻击,同时也为浏览器节省来一次 302/301
的跳转请求,收益还是很高的。我们的很多页面,难以避免地出现 http
的链接,比如 help 中的链接、运营填写的链接等,这些链接的请求都会经历一次
302,对于用户也是一样,收藏夹中的链接保存的可能也是 http 的。

浏览器支持

Chromium和Google Chrome从4.0.211.0版本开始支持HSTS

Firefox 4及以上版本

Opera 12及以上版本

Safari从OS X Mavericks起

Internet Explorer从Windows
10技术预览版开始支持,之后微软又向IE11用户推送了支持HSTS的更新。

中间人劫持

起因是这样,https 使用的是 443 端口进行数据传输,而浏览器的默认端口是

  1. 劫持者首先劫持用户的 80
    端口,当用户向目标页发起请求时,劫持者模拟正常的 https
    请求向源服务器获取数据,然后通过 80
    端口返回给用户,大概可以看下下面两张图:

正规网赌平台 1

用户一般不会在地址栏输入  https://www.taobao.com ,而是习惯性输入
taobao.com  ,此时浏览器走的是
http,请求到达服务器之后,服务器告诉浏览器 302 跳转

Location: https://www.taobao.com

1
Location: https://www.taobao.com

然后浏览器重新请求,通过 HTTPS 方式,443
端口通讯。而正因为用户不是直接输入 正规网赌平台,https:// 链接,劫持者利用这一点:

正规网赌平台 2

只要能够劫持你的网络,比如路由劫持、DNS劫持,就可以作为中间人注入代码、替换广告。。。(上了
https 也拗不过电信,真是日了够了)

这种劫持出现在两种情况下:

  • 用户没有通过准确的方式访问页面,除非输入 https:// ,否则浏览器默认以 http 方式访问
  • HTTPS 页面的链接中包含 http,这个 http 页面可能被劫持

缺点

HSTS并不是HTTP会话劫持的完美解决方案。用户首次访问某网站是不受HSTS保护的。这是因为首次访问时,浏览器还未收到HSTS,所以仍有可能通过明文HTTP来访问。如果他们通过HTTP访问HSTS保护的网站时:

  • 以前从未访问过该网站
  • 最近重新安装了其操作系统
  • 最近重新安装了其浏览器
  • 切换到新的浏览器
  • 切换到一个新的设备如移动电话
  • 删除浏览器的缓存
  • 最近没访问过该站并且max-age过期了

解决这个不足目前有两种方案

一是浏览器预置HSTS域名列表,Google Chrome、Firefox、Internet
Explorer和Spartan实现了这一方案。google坚持维护了一个“HSTS preload
list”的站点域名和子域名,并通过https://hstspreload.appspot.com/提交其域名。该域名列表被分发和硬编码到主流的web浏览器。客户端访问此列表中的域名将主动的使用HTTPS,并拒绝使用HTTP访问该站点。
一旦设置了STS头部或者提交了你的域名到HSTS预加载列表,这是不可能将其删除的。这是一个单向的决定使你的域名通过HTTPS可用的。

二是将HSTS信息加入到域名系统记录中。但这需要保证DNS的安全性,也就是需要部署域名系统安全扩展。截至2014年这一方案没有大规模部署。

由于HSTS会在一定时间后失效(有效期由max-age指定),所以浏览器是否强制HSTS策略取决于当前系统时间。部分操作系统经常通过网络时间协议更新系统时间,如Ubuntu每次连接网络时,OS
X
Lion每隔9分钟会自动连接时间服务器。攻击者可以通过伪造NTP信息,设置错误时间来绕过HSTS。解决方法是认证NTP信息,或者禁止NTP大幅度增减时间。比如Windows
8每7天更新一次时间,并且要求每次NTP设置的时间与当前时间不得超过15小时。


创建于 2017-05-18 成都,更新于 2017-05-18 成都

该文章在以下平台同步

  • [1] 引用

你所不知道的 HSTS

2015/10/24 · HTML5 ·
HSTS

原文出处:
李靖(@Barret李靖)   

很多人听说过也看到过 301、302,但是几乎从来没有看到过 303 和 307
的状态码。今天在淘宝首页看到了 307 状态码,于是摸索了一把。

最近对我的个人网站启用了Https,所以想设置http默认自动转https访问的功能,但又不想总让服务端做转发操作,那样浪费资源。那么有什么好的办法呢?

相关文章