“浏览器安全”领域涵盖的范围非常大,且今天浏览器仍然在不断更新,不断推出新的安全功能。
为了在安全领域获得竞争力,微软率先在IE 8中推出了XSS Filter功能,用以对抗反射型XSS。一直以来,XSS(跨站脚本攻击)都被认为是服务器端应用的漏洞,应该由服务器端应用在代码中修补,而微软率先推出了这一功能,就使得IE 8在安全领域极具特色。
当用户访问的URL中包含了XSS攻击的脚本时,IE就会修改其中的关键字符使得攻击无法成功完成,并对用户弹出提示框。
IE 8拦截了XSS攻击
有安全研究员通过逆向工程反编译了IE 8的可执行文件,得到下面这些规则:
这些规则可以捕获URL中的XSS攻击,其他的安全产品可以借鉴。
而Firefox也不甘其后,在Firefox 4中推出了Content Security Policy(CSP)。这一策略是由安全专家Robert Ha nson最早提出的,其做法是由服务器端返回一个HTTP头,并在其中描述页面应该遵守的安全策略。
由于XSS攻击在没有第三方插件帮助的情况下,无法控制HTTP头,所以这项措施是可行的。
而这种自定义的语法必须由浏览器支持并实现,Firefox是第一个支持此标准的浏览器。
使用CSP的方法如下,插入一个HTTP返回头:
其中 p olicy 的描述极其灵活,比如:
浏览器将信任来自 m ydomain.com及其子域下的内容。
又如:
浏览器除了信任自身的来源外,还可以加载任意域的图片、来自media1.com的媒体文件,以及userscripts.example.com的脚本,其他的则一律拒绝。
CSP的设计理念无疑是出色的,但是CSP的规则配置较为复杂,在页面较多的情况下,很难一个个配置起来,且后期维护成本也非常巨大,这些原因导致CSP未能得到很好的推广。
除了这些新的安全功能外,浏览器的用户体验也越来越好,随之而来的是许多标准定义之外的“友好”功能,但很多程序员并不知道这些新功能,从而可能导致一些安全隐患。
比如,浏览器地址栏对于畸形URL的处理就各自不同。在IE中,如下URL将被正常解析:
会变为
具有同样行为的还有Chrome,将“\”变为标准的“/”。
但是Firefox却不如此解析,www.google.com\abc 将被认为是非法的地址,无法打开。
同样“友好”的功能还有,Firefox、IE、Chrome都会认识如下的URL:
会变为
Firefox比较有意思,还能认识如下的URL:
这些功能虽然很“友好”,但是如果被黑客所利用,可能会用于绕过一些安全软件或者安全模块,反而不美了。
浏览器加载的插件也是浏览器安全需要考虑的一个问题。近年来浏览器所重点打造的一大特色,就是丰富的扩展与插件。
扩展和插件极大地丰富了浏览器的功能,但安全问题也随之而来,除了插件可能存在漏洞外,插件本身也可能会有恶意行为。扩展和插件的权限都高于页面JavaScript的权限,比如可以进行一些跨域网络请求等。
在插件中,也曾经出现过一些具有恶意功能的程序,比如代号为Trojan.PWS.ChromeInject.A的恶意插件,其目标是窃取网银密码。它有两个文件:
它将监控所有Firefox浏览的网站,如果发现用户在访问网银,就准备开始记录密码,并发送到远程服务器。新的功能,也给我们带来了新的挑战。