0x00 同源策略
同源策略:限制了来自不同源的document或脚本对当前document读取或设置某些属性
决定是否属于同一源的三大部分:协议、域名、端口
浏览器中,一些src属性(<script>,<img>,<iframe>,<link>
)并不受同源策略限制,但浏览器限制了JavaScript的权限,使其不能读、写加载的资源内容,每次通过src加载资源,都相当于一次get请求
XMLHttpRequest
XMLHttpRequest(XHR)对象用于与服务器交互,进行http通信
。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据.
XMLHttpRequest可以访问同源对象的内容,但受到同源策略的约数,不能跨站访问资源。但后来跨域请求需求迫切,W3C制定了XMLHttpRequest跨域访问标准:通过目标域返回的http头来授权是否允许跨站访问
该标准的安全基于:JavaScript无法控制http头这一事实
受到同源策略的还有:DOM、Cookie,XMLHttpRequest,浏览器加载的第三方插件(Flash、Java Applet、Silverlight等)
同源策略的作用过程
以flash为例
以www.qq.com的策略文件为例,当其他域的页面加载了Flash后,对www.qq.com发起访问请求,flash检查www.qq.com的策略文件是否存在(crossdomain.xml),然后检查发起的域是否在许可范围内
0x01 浏览器沙箱
浏览器采取多进程的架构,将浏览器的各个功能模块分开,当一个进程崩溃时,也不会影响到其他进程。Sandbox即起到隔离作用,采用Sandbox,让不信任的网页代码,运行在一个受限制的环境中个,从而保证桌面系统的安全
。
0x02 恶意网址拦截
浏览器周期性地从服务器获取一份最新的恶意网址名单,如果用户访问的网址存在于此名单中,浏览器就会弹出一个警告页面。
恶意网址有:挂马网站和钓鱼网站
一般浏览器厂商会推送恶意网址黑名单,所以对搜索引擎来说,这份黑名单也是核心竞争力之一。
0x03 XSS Filter(IE 8)
用于对抗XSS,当URL包含了XSS脚本时,IE就会修改关键字来使得攻击无法完成
0x04 Conten Security Policy(CSP)(Firefox 4)
由服务器返回一个HTTP头,并在其中描述页面该遵守的安全策略,由于XSS在没有第三方插件的帮助情况下,无法控制http头
,所以这项措施是可行的。
使用方法
插入一个http返回头:
X-Content-Security-Policy:policy
CSP的配置比较复杂,在页面较多的情况下,难以一个个地配置起来,所以并未得到很好的推广。
参考书籍:《白帽子讲web安全》