码迷,mamicode.com
首页 > Web开发 > 详细

ajax跨域问题

时间:2015-08-03 01:01:37      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:

跨域方式

1.基于iframe实现跨域 

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

2.基于script标签实现跨域 

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

3.后台代理方式 

    
这种方式可以解决所有跨域问题,也就是将后台作为代理,每次对其它域的请求转交给本域的后台,本域的后台通过模拟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,那么

    1. 用户登录了自己的银行页面向用户的cookie中添加用户标识
    2. 用户浏览了恶意页面 。执行了页面中的恶意AJAX请求代码
    3. 发起AJAX HTTP请求,请求同时对应cookie也同时发送过去
    4. 银行页面从发送的cookie中提取用户标识,验证用户标识无误,response中返回请求数据。此时数据泄露。
    5. 由于Ajax的后台执行,此时用户没有意识这一过程。

ajax跨域问题

标签:

原文地址:http://www.cnblogs.com/guzhixiang/p/4697095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!