• ajax跨域问题


    跨域方式

    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的后台执行,此时用户没有意识这一过程。
  • 相关阅读:
    前端学习笔记
    C#学习笔记
    angualr跨域访问配置
    一文把samba相关的都说清楚
    centos6.5上进行crontab操作
    VS2017 EF本地数据库链接
    Laravel服务/服务提供者/容器/契约和门面
    Laravel之目录结构
    Laravel之视图和Blade模板引擎
    Laravel之HTTP相应
  • 原文地址:https://www.cnblogs.com/guzhixiang/p/4697095.html
Copyright © 2020-2023  润新知