4个应该被使用的HTTP安全头部标签

她是从一个构建全世界知识库的梦想而开始的,现在她不仅是全球性的知识存储库而且也是最流行最容易被部署使用的应用平台:万维网。

现在的万维网是高速的象征是由多个客户端和服务器实体共同组成庞大系统,其功能和影响不断拓展。一系列的标准促使着万维网的完善和发展。

虽然互联网带给我们非常多的好处但由于互联网自由开放的特性导致其没有一致性,没有统一应用的模型因此存在着诸多的问题。对人们影响面最广的是安全问题。一条特殊的安全原则就是:事情越简单越安全。假如互联网简单那就很难出现比如XSS(跨站脚本攻击),CSRF(跨站请求伪造)或点击挟持(一种恶意攻击技术,用于跟踪网络用户,获取其私密信息或者通过让用户点击看似正常的网页来远程控制其电脑)等的安全漏洞。

由于HTTP是一个可扩展的协议,各浏览器厂商都推出相应的安全有效的HTTP头部来预防或阻止安全漏洞被利用,提高计算机安全性。所以了解这些HTTP头部是什么,掌握如何应用,对于提高系统和访问互联网的安全性是非常有帮助的。

 

1.CONTENT-SECURITY-POLICY(内容安全策略)

为什么使用:
怎么尽可能不遭受XSS攻击呢?众所周知,XSS攻击是指恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页时,嵌入其中Web里的html代码会被执行,从而达到恶意攻击用户的特殊目的。
那么如果有人在你的网页写了如下代码<script>alert(1);</script>浏览器能不能直接拒绝执行呢?
为了应对这些问题我们就需要在头部添加CONTENT-SECURITY-POLICY

如何使用
将下列编码写入HTTP头部中:
script-src: JavaScript code (biggest reason to use this header)
connect-src: XMLHttpRequest, WebSockets, and EventSource.
font-src: fonts
frame-src: frame ulrs
img-src: images
media-src: audio & video
object-src: Flash (and other plugins)
style-src: CSS

·特别注意:
Content-Security-Policy: script-src ‘self’ https://apis.google.com
这意味着脚本文件只能是来自当前文件或apis.google.com
另一个有用的特性就是你可以自动应用沙盒模式在整个站点。如果你想试一试效果,可以使用:
“Content-Security-Policy-Report-Only”头部;让浏览器返回一个你选的URL。
推荐阅读一下HTML5Rocks上的一篇CSP的介绍。

需要注意的问题:
1.IE只支持沙盘模式而且用的是“X”前缀;而安卓4.4则完全支持
2.它不能在你生成JavaScript动态(实践中并不常见)情况下防止XSS攻击

01

了解更多:

HTML5Rocks有非常好的介绍文章而 W3C规范也是深入学习的不错选择

 

2.X-FRAME-OPTIONS( X框架选项)

为什么要使用:
点击劫持是一种恶意攻击技术,用于跟踪网络用户,获取其私密信息或者通过让用户点击看似正常的网页来远程控制其电脑。点击劫持可以通过嵌入代码或者文本的形式出现,在用户毫不知情的情况下完成攻击,比如点击一个表面显示是“播放”某个视频的按钮,而实际上完成的操作却是将用户的社交网站个人信息改为“公开”状态。
而使用X-FRAME-OPTIONS能够阻止点击劫持的发生。

如何实现:
在HTTP头部输入:X-Frame-Options: DENY(使浏览器拒绝请求该页数据)
如果设置成’SAMEORIGIN’,则将允许同源数据;
如果设置成‘ALLOW FROM http://url-here.example.com’则将允许设置一个源(IE不支持)

需要注意的问题:
1.一些浏览器不支持这个header 或者其被整合到Content-Security-Policy 1.1之中
02

了解更多:
可访问Mozilla Developer Network关于此问题的文章。
Coding Horror 同样有比较不错的文章。

 

3.X-CONTENT-TYPE-OPTIONS (X内容类型选项)

为什么要使用:
允许用户上传文件是一件危险的事情,提供文件上传服务的危险性更大,而且很难做到万无一失。即使内容是通过MIME嗅探获取,要让浏览器进行二次内容类型猜测服务也不是一件容易的事情。而为了确保用户上传文件时的安全性就需要用到X-CONTENT-TYPE-OPTIONS

如何使用:
X-CONTENT-TYPE-OPTIONS 值为:‘nosniff’为正确。其作用是允许用户更有效的告知浏览器,用户确定其想做的事情。(GitHub 就是使用这种方法来保护用户)

需要注意的问题:
这个头部只只适用于IE和Chrome,不过根据你的用户,你还是可以保护65%的用户的。

03

了解更多:
FOX IT上有一篇关于MIME嗅探的优秀文章: MIME 嗅探: 特性还是漏洞? 
IT Security Stackexchange上也有个专题:X-Content-Type-Options真能防止内容嗅探攻击吗?

 

4.Strict-Transport-Security (交换安全措施)

为什么使用:
使用HTTPS可以为我们提供相对安全的环境。然而问题是:当我输入”onlinebanking.example.com” 到我的地址栏,浏
览器会默认使用HTTP协议,只有当服务器重定向时才会提供安全HTTPS来建立连接。而重定向的过程中,黑客能够进行中间人攻击。
为解决这个问题,Strict-Transport-Security头部应运而生。

如何使用:
HTTP的Strict-Transport-Security (HSTS)头部会强制浏览器使用HTTPS进行链接.比如:
你输入 https://hsts.example.com,而它会返回:Strict-Transport-Security: max-age=31536000; includeSubDomains
而输入http://hsts.example.com,浏览器也会自动链接https://hsts.example.com
只要HSTS头部一直有效,浏览器就会默认这么做。在一般情况下,在最后一次接收到包含HSTS头的HTTP回复后1年之内都保持有效。

需要注意的问题:

仅适用于Chrome和Firefox,但它已经成为官方的IETF标准,相信IE浏览器不久也将支持这个头部。

04

了解更多:
Mozilla Developer Network上有一篇不错的文章:HTTP Strict Transport Security



文章转载自:果芽网(guobud.com)

展开阅读全文

没有更多推荐了,返回首页