4、 MIME Smuggling:IE8中的一个开关
IE浏览器中的一个恼人问题是:当微软把问题尽量处理得更简单时,到最后,却给用户和网站所有者带来无尽的安全困扰。
一个典型的例子就是MIME-sniffing。IE有一个特性,那就是在将一个文件展示给用户之前会首先检查文件的类型,这乍看起来并没什么问题,但实际上这是相当危险的,因为这会允许IE执行图片中的代码,即嵌入在一个图像中的JavaScript代码。引入MIME sniffing功能的初衷是用来弥补Web服务器响应一个图像请求时有可能返回错误的内容类型信息这一缺陷。
IE引入的MIME sniffing或者MIME类型检测方法,都会让IE假定来自web的文件的内容类型就是服务器在HTTP标头中的所声明的内容类型。IE浏览器既不信任文件名扩展部分,也不信任签名,相反,它是通过检查文件开头的256字节内容来确定文件的类型。IE引入MIME sniffing功能的初衷是用来提防服务器给出的错误内容类型指示的,但是攻击者却利用它来规避IE中的安全防御功能,即防止浏览器自动地执行所下载的文件(如hta文件)的那些功能。
微软公司已经认识到这个问题,并计划在IE的新版本中加以修复。IE8不再探测图像,因此,它会忽略嵌入的HTML。现在,IE8的网站管理人员和应用开发者,可以通过在应答中发送X-Content-Type-Options: nosniff来关闭MIME sniffing功能。
5、HTTP-ony cookies
一旦跨站点脚本攻击获得成功,他们都有一个共同的意图:利用cookies劫持会话或者账户登录。Firefox 2/3+ 和IE 6 SP1+版本都支持cookies扩展,这就使得非法的JavaScript也能够读取到被标记为“HTTPOnly”的cookies。
在cookie中设置HTTPOnly标记,可以有效地阻碍跨站脚本攻击中被插入的非法JavaScript,从而避免恶意读取或者更改cookie,也可以减少会话劫持问题的出现。
6、跨域访问:潘多拉的盒子?
传统的AJAX应用程序无法打破同一来源的安全政策。比如,现在你看到的所在页面就是对应一个合法的网站域名,并不能通过其他的域来访问。这种限制是具体地严格对照域名字符串来实现的。因此,网址会自动限制跨域访问。这种限制具有重要的安全意义,尤其是当考虑到动态JavaScrip时候。