zoukankan      html  css  js  c++  java
  • 同源策略和Ajax跨域

    同源策略

     何谓同源:

            URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示他们同源。

        同源策略:

            浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性。 

            从一个域上加载的脚本不允许访问另外一个域的文档属性。

    举个例子:

            比如一个恶意网站的页面通过iframe嵌入了银行的登录页面(二者不同源),如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。

     

        在浏览器中,<script>、<img>、<iframe>、<link>等标签都可以加载跨域资源,而不受同源限制,但浏览器限制了JavaScript的权限使其不能读、写加载的内容。

        另外同源策略只对网页的HTML文档做了限制,对加载的其他静态资源如javascript、css、图片等仍然认为属于同源。

     

    Ajax跨域

     

    Ajax (XMLHttpRequest)请求受到同源策略的限制。

        Ajax通过XMLHttpRequest能够与远程的服务器进行信息交互,另外XMLHttpRequest是一个纯粹的Javascript对象,这样的交互过程,是在后台进行的,用户不易察觉。

        因此,XMLHTTP实际上已经突破了原有的Javascript的安全限制。

     

    举个例子:

            假设某网站引用了其它站点的javascript,这个站点被compromise并在javascript中加入获取用户输入并通过ajax提交给其他站点,这样就可以源源不断收集信息。

     

            或者某网站因为存在漏洞导致XSS注入了javascript脚本,这个脚本就可以通过ajax获取用户信息并通过ajax提交给其他站点,这样就可以源源不断收集信息。

     

       如果我们又想利用XMLHTTP的无刷新异步交互能力,又不愿意公然突破Javascript的安全策略,可以选择的方案就是给XMLHTTP加上严格的同源限制。

       这样的安全策略,很类似于Applet的安全策略。IFrame的限制还仅仅是不能访问跨域HTMLDOM中的数据,而XMLHTTP则根本上限制了跨域请求的提交。

     

    Ajax的跨域技术

      JSONP  Proxy  CORS

  • 相关阅读:
    url路由配置及渲染方式
    django类视图介绍与类视图装饰器
    什么是数据类型
    python代码的编写和运行
    python环境搭建
    python教程(目录)
    编程语言概念
    面向对象入门
    编程语言
    Tornado框架实现图形验证码功能
  • 原文地址:https://www.cnblogs.com/erin43/p/7168468.html
Copyright © 2011-2022 走看看