博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浏览器安全之同源策略
阅读量:5972 次
发布时间:2019-06-19

本文共 1165 字,大约阅读时间需要 3 分钟。

同源策略

同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能会受到影响.可以说Web是构建在同源策略的基础之上的,浏览器只是针对同源策略的一种实现.

浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性.影响"源"的因素有:协议,域名,端口号.

需要注意的是,对于当前页面来说,页面存放JavaScript文件的域并不重要,重要的是加载JavaScript页面所在的域是什么.

在浏览器中,<script>,<img>,<ifram>,<link>等标签都可以跨域加载资源,而不受同源策略的限制.这些带"src"属性的标签每次加载时,实际上是由浏览器发起了一次GET请求.不同于XMLHttpRequest的是,通过src属性加载的资源,浏览器限制了JavaScript的权限,使其不能读写返回的内容.

XMLHttpRequest受到同源策略的约束,不能跨域访问资源.如果XMLHttpRequest能够跨域访问资源,则可能会导致一些敏感数据泄露,比如CSRF的token,从而导致发生安全问题.

但是互联网是开放的,随着业务的发展,跨域请求的需求越来越迫切,因此W3C委员会制定了XMLHttpRequest跨域访问标准.它需要通过目标域返回的HTTP头来授权是否允许跨域访问,因为HTTP头对于JavaScript来说一般是无法控制的.

对于浏览器来说,除了DOM,Cookie,XMLHttpRequest会受到同源策略的限制外,浏览器加载的一些第三方插件也有各自的同源策略.最常见的一些插件如Flash,Java Applet等都有自己的控制策略.以Flash为例,它主要通过目标网站提供的crossdomain.xml文件判断是否允许当前

"源"的Flash跨域访问目标资源.

然而浏览器的同源策略也并非坚不可摧,由于实现上的一些问题,一些浏览器的同源策略也曾经被多次绕过.比如下面这个IE8的CSS跨域漏洞.

www.a.com/test.html

{} body {font-family:aaaaaaaaaaaabbbbbbbbbbb

www.b.com/test2.html

在"www.b.com/test2.html"汇总通过@import加载了"http://www.a.com/test.html"为CSS文件,渲染进入当前页面DOM,同时通过"document.body.currentStyle.fontFamily"访问内容.问题发生在IE的CSS PARSE的过程中,IE将fontFamily后面的内容当做了value,从而可以读取"www.a.com/test.html"的页面内容.

转载地址:http://uczox.baihongyu.com/

你可能感兴趣的文章
笔记本进水
查看>>
Nginx配置文件nginx.conf (Apache)
查看>>
jquery和JavaScript区别
查看>>
pxe方式安装gentoo
查看>>
Project Management Library项目管理甘特图控件
查看>>
MySQL存储过程详解
查看>>
解决查看框架源码时 class file editor source not found
查看>>
JDBC接口
查看>>
脏读,不可重复读,幻读
查看>>
ssh反向主动连接 及脚本加密
查看>>
Mysql数据库误删除数据恢复成功
查看>>
自己收藏的前端网站
查看>>
使用mybatis自动生成指定规则的编号
查看>>
SQLSERVER排查CPU占用高的情况
查看>>
Swift中如何重新懒加载
查看>>
Vysor:安卓手机放到电脑上用
查看>>
AutoCompleteTextView的简单用法
查看>>
scala学习笔记(一)入门初探
查看>>
ios开发学习--列表(Table)效果源码分享--系列教程4
查看>>
布局管理器 2----- 表格布局
查看>>