美文网首页前端风暴让前端飞Web前端之路
关于同源策略你可能也有的一些疑问

关于同源策略你可能也有的一些疑问

作者: 7天苹果 | 来源:发表于2017-08-29 14:36 被阅读79次

同源策略的含义详解

  • 含义一(DOM层面的同源策略):限制了来自不同的”document”对象或js脚本,对当前“document”对象的读取或设置某些属性;
  • 含义二(Cookie和XMLHttprequest层面的同源策略):只有和本网页同源的脚本才会被执行,有时,AJAX已经加载不同源的脚本,但绝对不会被执行;
  • 含义三(同源策略的非绝对性):同源策略通常允许进行跨域写操作、通常允许跨域资源嵌入、通常不允许跨域读操作;<script><img><iframe><link><video><audio>等带有src属性的标签可以从不同的域加载和执行资源,同源策略关注的是加载js的页面所在的域,而不是页面内存放的js文件的域;
  • 含义四(其他插件的同源策略):flash、java applet、silverlight、googlegears等浏览器加载的第三方插件也有各自的同源策略,只是这些同源策略不属于浏览器原生的同源策略,如果有漏洞则可能被黑客利用,从而留下XSS攻击的后患;

几个同源策略常见问题

1、没有同源策略会怎样?为什么同源策略禁止跨域读操作?

设想你打开了一个银行网站,又打开了一个恶意网站,如果没有同源策略,将会:
恶意网站包含了脚本a.js,银行网站在没有加载此脚本的情况下,就可以被此脚本操纵,操纵的后果是:

  • 银行网站页面DOM结构被篡改;
  • 银行网站页面DOM元素的属性和值被篡改;
  • 银行页面发送的表单信息可能被恶意脚本接收到,造成用户名密码泄漏;
  • 恶意网站通过自己加载的恶意js脚本获取了银行网站用户的cookie信息,并将它发送给了银行网站,随后,恶意网站就可以自动的、不受用户限制的、在用户不知情的情况下登录用户的银行网站并且伪装用户发送转账等请求;

2、有了同源策略会怎样?

浏览器在执行一个js脚本(或其他脚本)前,需要对这个脚本进行同源检测,如果加载这个脚本的页面和当前页面不同源,浏览器将拒绝执行此脚本;注意,浏览器并不关心js脚本来自何方(不关心js脚本从哪个域名、哪个”源”加载),它只关心加载脚本的那个页面是否和当前页面同源;

3、为什么<script><img><iframe><link><video><audio>等带有src属性的标签可以不遵守同源策略/为什么同源策略允许跨域嵌入:

  • 现在很多大型网站的js脚本、图片等都不是存放在存储网站页面的那台服务器上,他们很可能通过CDN等方式传送到浏览器端,如果限制他们必须和网站页面同源,无异于自己束缚手脚;
  • 一个网站要加载哪些脚本,由网站的编写人员说了算,他们不会故意加载恶意脚本(比如银行网站的编写人员不会将恶意网站的脚本写在银行网站中),所以只要是写在网页中的脚本,我们认为它是安全的;
  • 所以,a.com的网页中可以写<script src="b.js"></script>,a网站加载了b网站的脚本,这是完全可以的,不受任何限制;
    可以这样认为,只要是页面加载的脚本,都和页面同源,无论这个脚本来自哪个”源”(source);

4、为什么同源策略允许跨域写操作?

和上面一条理解相同;比如提交表单这个写操作,表单不一定提交到提供网页页面的网站,很有可能提交到专门处理表单的服务器,如果不允许跨域写,将是很不灵活的;表单提交到什么地方,是编写页面时程序员决定,程序员不可能故意写一个恶意域名进去,所以写操作通常是安全的。

5、“同源”的具体含义?

网站的同源:域名、协议、端口有一个不同就不是同源,三者均相同,这两个网站才是同源;

js脚本的同源:处于同源网站上的js脚本同源,否则不同源。

相关文章

  • 关于同源策略你可能也有的一些疑问

    同源策略的含义详解 含义一(DOM层面的同源策略):限制了来自不同的”document”对象或js脚本,对当前“d...

  • 同源策略 & 跨域

    同源策略 1.浏览器同源策略 同源策略(Same Origin Policy,SOP)也叫单源策略(Single ...

  • 一些 HTML 的知识总结

    本文总结一些 HTML 相关的知识,留作以后查看,包括同源策略、跨域、HTML 语义化等。 同源策略 同源策略是浏...

  • 同源策略&跨域

    同源策略&跨域 什么是浏览器同源策略? 同源策略(Same Origin Policy,SOP)也叫单源策略(Si...

  • jsonp系列(二)jsonp的原理与实现方式

    在介绍jsonp之前,先来聊一聊浏览器的同源策略。 关于同源策略的由来 1995年,同源策略被引入到浏览器中,其目...

  • 跨域

    关于跨域 什么是同源策略? 同源策略/SOP(Same origin policy)是一种约定,由 Netscap...

  • Javascript 跨域问题小记

    1、同源策略 同源策略是有 Netscape 提出的一个著名的安全策略,现在所有的支持 javascript 的浏...

  • 关于同源策略

    在浏览器中, 等标签都可以跨域加载资源,不受同源策略限制。这些带“src”属性的标签加载时,相当于GET请求...

  • 关于同源策略

    同源策略 同源策略是一种约定,是由Netscape提出的著名安全策略。他是浏览器最核心、最基本的安全功能。 同源的...

  • 快速了解JavaScript的跨域

    浏览器有一个重要的安全策略,就是 同源策略,它用于限制不同源之间资源的交互。能够帮助阻挡一些恶意的访问,减少可能被...

网友评论

  • 2fe0c0c3a7bf:所以说同源策略相当于给解决了浏览器的 "bug"

本文标题:关于同源策略你可能也有的一些疑问

本文链接:https://www.haomeiwen.com/subject/lhhodxtx.html