浏览器安全

Posted kluas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器安全相关的知识,希望对你有一定的参考价值。

  绝大多数互联网用户使用联网的工具是浏览器,随着浏览器版本的不断更新,浏览器的安全功能也变得越来越重要,总结了一下主要的浏览器安全功能。

一.同源策略

  同源策略是一种约定,它是浏览器最核心的也是最基本的安全功能,很多时候浏览器的实现的同源策略是隐形的,透明的,浏览器的同源策略,限制了来之不同源的“document”或者脚本,对当前“document”读取或者设置某些属性,阻止浏览器的页面行为发生混乱。

影响“源”的因素有:域名,子域名,端口,协议。对于当前页面来说,页面内存放javascript文件的域并不重要,重要的是加载JavaScript页面所在的域是什么。例如,a.com通过以下代码:

<script src=http://b.com/b.js></script>

加载了b.com上的b.js文件,但是b.js文件是由a.com加载运行的,所以源应该是a.com而不是b.com。

  在浏览器中,<script>,<img>,<iframe>,<link>等标签都可以跨域加载资源,而不受同源策略的限制。这些带“src”属性的标签每次加载时,实际上就是由浏览器发起了一次GET请求。不同于XMLHttpResquet的是,通过src属性加载的资源,浏览器限制了JavaScript的权限,让其不能读,写返回的内容。XMLHttpRequest有一套跨域访问的标准,就是通过目标域返回的HTTP头来授权是否允许跨域访问,因为HTTP头对于JavaScript来说一般是无法控制的

  对于浏览器来说,不仅DOM,Cookie,XMLHttpRequest会受到同源策略的限制,浏览器加载的一些第三方插件和扩展也有各自的同源策略,最常见的插件如Flash,Java Applet,Silverlight,Google Gears等都有自己的控制策略。

  以Flash为例,它主要通过目标网站提供的crossdomain.xml文件判断是否允许当前“源”的Flash跨域访问目标资源,从“源”的层面控制了Flash行为的安全性。Flash9版本后,还实现了MIME检查以确认crossdomain.xml是否合法,比如查看服务器返回的HTTP头的Content-Type是否是text/*,application/xml,application/xhtml+xml。这样做的原因,是因为攻击者可以通过上传crossdomain.xml文件控制Flash的行为,绕过同源策略。除了MIME检查外,Flash还会检查crossdomain.xml是否在根目录下,也可以使得一些上传文件的攻击失效。

二.浏览器沙箱

  沙箱,已经泛指“资源隔离模块”的代名词,沙箱设置的目的就在于为了让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区外的资源。如果一定要跨越沙箱边界产生数据交换,则只能通过特定的数据通道,比如经过封装的API来完成,在这些API中会严格检查请求的合法性。对于浏览器来说,沙箱技术,可以让不受信任的网页代码,JavaScript代码运行在一个受限制的环境中,从而保证本地桌面系统的安全。

  浏览器发展出了多进程架构,每一个页面就是一个进程,发生崩溃的时候,只会崩溃当前的页面进程,不会影响到其他的页面进程,既提高了安全性,又提升了用户体验。但浏览器安全是一个整体,虽有多进程架构和沙箱技术的保护,但是浏览器所加载的一些第三方插件却往往不收沙箱管辖,一些三方插件一方面试自身脆弱,容易被攻击,另一方面是有些三方软件行为就是带有恶意的。

三.恶意网址拦截

  常见的恶意网址分为两类:,一类是是“挂马”网站,这些网站通常包含有恶意的脚本,通过利用浏览器的漏洞(包括一些插件和控件漏洞),执行shellcode,在用户电脑中植入木马;另一类就是钓鱼网站,通过模仿知名网站的相似页面来欺骗用户。

  针对恶意网址拦截,目前浏览器厂商以推送恶意网址黑名单为主,现在的浏览器多是与专业的安全产商展开合作,由安全产商或机构提供恶意网址黑名单。

四.其他安全措施

  IE中有XSSFilter功能,用以对抗XSS。

  Firefox中有Content Security Policy。其做法就是有服务器返回一个HTTP头,并在其中描述页面应该遵守的安全策略。使用CSP的用法如下,插入一个HTTP返回头:

X-Content-Security-Policy:policy

其中policy的描述比较灵活,例如:

X-Content-Security-Policy:allow ‘self‘*.com

浏览器将信任来自mydomain.com及其子域下的内容。

再比如:

X-Content-Security-Policy:allow ‘self‘;img-src*;media-src medial.com; script-src userscripts.example.com

除了信任自身来源之外,还可以加在任意域的图片,来自medial.com的媒体文件,以及userscripts.example.com的脚本,其他的规律一律拒绝。

CSP的设计理念是出色的,就是配置规则在页面较多的时候有点复杂。

以上是关于浏览器安全的主要内容,如果未能解决你的问题,请参考以下文章

十条实用的jQuery代码片段

CPNtools协议建模安全分析---实例变迁标记

《安富莱嵌入式周报》第279期:强劲的代码片段搜索工具,卡内基梅隆大学安全可靠C编码标准,Nordic发布双频WiFi6 nRF7002芯片

AJAX相关JS代码片段和部分浏览器模型

关于在各浏览器中插入音频文件的html代码片段

兼容ie8,firefox,chrome浏览器的代码片段