在接下来的一年中,如果 example.com 服务器发送的TLS证书无效,用户不能忽略浏览器警告继续访问网站 。
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字段,用户将不再允许忽略警告 。
0×03. Strict-Transport-Security的一些不足
用户首次访问某网站是不受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小时
X-XSS-Protection响应头
顾名思义,这个响应头是用来防范XSS的 。最早我是在介绍IE8的文章里看到这个,现在主流浏览器都支持,并且默认都开启了XSS保护,用这个header可以关闭它 。它有几种配置:
0:# 禁用XSS保护;1:# 启用XSS保护;1; # mode=block:启用XSS保护,并在检查到XSS攻击时,停止渲染页面(例如IE8中,检查到攻击时,整个页面会被一个#替换);# HTTP X-XSS-Protection 响应头是 Internet Explorer,Chrome 和 Safari 的一个特性,# 当检测到跨站脚本攻击 (XSS)时,浏览器将停止加载页面 。# X-XSS-Protection响应头的缺失使得目标URL更易遭受跨站脚本攻击 。# 浏览器提供的XSS保护机制并不完美,但是开启后仍然可以提升攻击难度,总之没有特别的理由,不要关闭它 。
Nginx配置方法如下# add_header X-Xss-Protection: 1;# add_header X-Xss-Protection: mod=block;
文章插图
实际案例Google+使用功能了这几个文本提到的响应头
# x-content-type-options: nosniff# x-frame-options: SAMEORIGIN# x-xss-protection: 1; mode=block
Twitter# strict-transport-security: max-age=631138519# x-frame-options: SAMEORIGIN# x-xss-protection: 1; mode=block
PayPal# X-Frame-Options: SAMEORIGIN# Strict-Transport-Security: max-age=14400
Facebook配置了详细的CSP,关闭了XSS保护strict-transport-security: max-age=60x-content-type-options: nosniffx-frame-options: DENYx-xss-protection: 0content-security-policy: default-src *;script-src https://*.facebook.com http://*.facebook.com https://*.fbcdn.net http://
推荐阅读
- 电脑硬件配置够但玩游戏就是不流畅,这问题可能出在哪里呢?
- 华为防火墙配置上网行为管理,禁止上网,只允许邮件、微信和钉钉
- 自动化测试之读取配置文件
- Docker 安装 Nginx
- Nignx的安装和使用
- 负载均衡解析与Nginx实战
- 女人味|外国男生晒出模仿女生的各种摆拍,画风充满“女人味”,辣眼睛
- 氯化钠注射液起什么作用?
- 华为交换机DHCP配置方法,了解一下?
- 小白必备 头条创作23天,头条收益以及各种数据参考老司机忽略