您的位置:首页 > 其它

ajax跨域问题

2015-08-02 23:35 246 查看

跨域方式

[b]1.基于iframe实现跨域

[/b]基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com这种特点,也就是两个页面必须属于一个基础域(例如都是xxx.com,或是xxx.com.cn),使用同一协议(例如都是 http)和同一端口(例如都是80),这样在两个页面中同时添加document.domain,就可以实现父页面调用子页面的函数。

[b]2.基于script标签实现跨域

[/b]script标签本身就可以访问其它域的资源,不受浏览器同源策略的限制,可以通过在页面动态创建script标签。

[b]3.后台代理方式

[/b]这种方式可以解决所有跨域问题,也就是将后台作为代理,每次对其它域的请求转交给本域的后台,本域的后台通过模拟http请求去访问其它域,再将返回的结果返回给前台,这样做的好处是,无论访问的是文档,还是js文件都可以实现跨域。

跨域攻击

使用ajax技术让人头痛的地方就是如何跨域,受同源策略所限不同域名包括子域名在内是无法进行AJAX请求的,随后衍生出一类技术可以通过设置document.domain实现跨域。如a.test.com和b.test.com,当两个网站通过javascript操作DOM接口 document.domain=’test.com’ 将网站的域设置为test.com后,两个网站就处于同一个域内,可以进行各种跨域操作。在开发人员方面这是很方便的跨域技术,但是在攻击者眼中这简直就是一个大后门,黑客只需要找到*.test.com下任意一个XSS漏洞,在任意一个子域名里的网页都可以跨域攻击a.test.com和b.test.com。

为什么要禁止跨域的 Ajax 请求?

同源策略

DOM同源策略:禁止对不同源页面DOM进行操作

XmlHttpRequest同源策略:禁止向不同源的地址发起HTTP请求

AJAX同源策略主要用来防止CSRF攻击。如果没有AJAX同源策略,攻击过程如下:
我们发起的每一次HTTP请求都会全额发送request地址对应的cookie,那么


用户登录了自己的银行页面http://MyBank.comhttp://MyBank.com向用户的cookie中添加用户标识

用户浏览了恶意页面 http://Evil.com。执行了页面中的恶意AJAX请求代码

http://Evil.comhttp://MyBank.com发起AJAX HTTP请求,请求同时http://MyBank.com对应cookie也同时发送过去

银行页面从发送的cookie中提取用户标识,验证用户标识无误,response中返回请求数据。此时数据泄露。

由于Ajax的后台执行,此时用户没有意识这一过程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: