跨域问题--浏览器的同源策略(读书笔记:web前端黑客技术揭秘)

133 阅读2分钟

浏览器的同源策略

计算机的本地和web是不同的层面,web运行在浏览器上,而被限制了直接进行本地数据的读写

同源策略是对浏览器的一个重要的安全策略,是众多安全策略的一个,是web层面上的策略。它限制了非同源的请求,如果没有同源策略,不同源的数据和资源就能相互访问。

同源策略规定:不同域客户端脚本在没明确授权的情况下,不能读写对方的资源

  1. 不同域

    指的是协议、域名、端口

  2. 客户端脚本

    客户端脚本主要是指JavaScript、ActionScript(flash)的脚本语言,以及JavaScript与AsctionScript都遵循的ECMAScript脚本标准

  3. 授权

    一般情况下,看到这个词,我们往往会想到服务端对客户端访问的授权。客户端也存在授权现象,比如:HTML5新标准中提到关于AJAX跨域访问的情况,默认情况下是不允许跨域访问的,只有目标站点明确返回HTTP响应头: Access-Control-Allow-origin

    AjAx让数据在后台进行异步传输,常见的使用场景有:对网页的局部数据进行更新是,不需要刷新整个网页,以节省带宽资源。AJSAX也是黑客进行web客户端攻击常用的技术

  4. 读写权限

    Web 上的资源有很多,有的只有读权限,有的同时拥有读和写的权限。比如:HTTP请求头里的Referer(表示请求来源)只可读,而document.cookie则具备读写权限。这样的区分也是为了安全上的考虑。

  5. 资源

    只要是数据就可以认为是资源。同源策略里面的资源指的是web客户端的资源,包括HTTP消息头、整个DOM树、浏览器存储等。客户端安全威胁都是围绕这些资源进行的。

在同一个域内,客户端脚本可以任意读写同源内的资源,前提是这个资源本身是可读可写的。