解说同源策略和跨域访问

尽管浏览器的安全措施多种多样,但是要想黑掉一个Web应用,只要在浏览器的多种安全措施中找到某种措施的一个漏洞或者绕过一种安全措施的方法即可。浏览器的各种保安措施之间都试图保持相互独立,但是攻击者只要能在出错的地方注入少许JavaScript,所有安全控制几乎全部瓦解——最后还起作用的就是最弱的安全防线:同源策略。同源策略管辖着所有保安措施,然而,由于浏览器及其插件,诸如Acrobat
Reader、Flash 和Outlook Express漏洞频出,致使同源策略也频频告破。

既然web应用的最弱安全防线是同源策略,那什么是同源策略呢?如何去攻破同源策略呢?如何黑web应用呢?

同源策略,它是由Netscape提出的一个著名的安全策略。所有支持javascript的网站都会使用同源策略来保护自己的web应用。

同源策略又名同域策略,通俗易懂的来说,同源就是(主机名+协议+端口号【若存在】)三者相同。也就是说javascript只可以操作自己域下的东西,不能操作其他域下的东西。比如百度下javascript是不可操作谷歌下的页面。

那为什么要同源策略呢?

如上述所述,同源策略,javascript操作自己web应用,不得操作别人web应用。既然如此,也就是别人无法操作自己web应用,是保证web安全的一种方式。

假设别人可以操作自己web应用,试想是否很可怕?假如你打开网银页面,蹦出一个恶意广告,当你关闭广告,若没有同源策略,是不是代表恶意广告会操作你网银页面,通过javascript窃取你网银的信息。

那了解了同源策略,下面举几个url判断是否在同一个域中。

假设url地址:http://store.company.com/dir/page.html检测下面是否他的同源地址。

其url的协议:http;主机名:store.company.com 端口号没有或者其相应服务器的默认值

URL 结果 原因
http://store.company.com/dir2/other.html
http://store.company.com/dir/inner/another.html
https://store.company.com/secure.html 不是 协议不相同
http://store.company.com:81/dir/etc.html 不是 端口号不相同
http://news.company.com/dir/other.html 不是 主机名不相同

同源策略概念已经解释,至于黑web应用,这个我能力尚浅,呵呵两字飘过~

任何事物都是相对的,既然存在同源策略,肯定会存在访问不同源的情况。那该怎么办呢?

上文也提到,同源即同域,不同源,即跨域。

那我若想跨域,怎么办呢?

目前ajax一般做法是不支持跨域的,但是随着跨域的需求呼声越来越强烈,目前跨域基本常用实现方式有两种JSONP和CORS方式。

其中link、img可以跨域访问,比如程序中img链接到百度图片,但是浏览器会阻止javascript读写操作的。

当你跨域访问时,会提示如下:

FireFox29:

已阻止交叉源请求:同源策略不允许读取 http://localhost:8089/crcp/rcp/t99eidt/testcors.do 上的远程资源。可以将资源移动到相同的域名上或者启用 CORS 来解决这个问题。

IE11:

SCRIPT7002: XMLHttpRequest: 网络错误 0x2efd, 由于出现错误 00002efd 而导致此项操作无法完成。

下篇博客介绍跨域两种解决方案的原理以及具体实施代码。

解说同源策略和跨域访问

时间: 2024-10-13 11:47:07

解说同源策略和跨域访问的相关文章

第二百七十四节,同源策略和跨域访问

同源策略和跨域访问  什么是同源策略 尽管浏览器的安全措施多种多样,但是要想黑掉一个Web应用,只要在浏览器的多种安全措施中找到某种措施的一个漏洞或者绕过一种安全措施的方法即可.浏览器的各种保安措施之间都试图保持相互独立,但是攻击者只要能在出错的地方注入少许JavaScript,所有安全控制几乎全部瓦解--最后还起作用的就是最弱的安全防线:同源策略.同源策略管辖着所有保安措施,然而,由于浏览器及其插件,诸如Acrobat Reader.Flash 和Outlook Express漏洞频出,致使同

JS同源策略和跨域访问

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响.可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现. 1. 什么是同源策略 理解跨域首先必须要了解同源策略.同源策略是浏览器上为安全性考虑实施的非常重要的安全策略. 何谓同源: URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源. 同源策略: 浏览器的同源策略,限制了来自不同源的"doc

同源策略和跨域访问

1. 什么是同源策略 理解跨域首先必须要了解同源策略.同源策略是浏览器上为安全性考虑实施的非常重要的安全策略.     何谓同源:         URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源.     同源策略:         浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性. (白帽子讲web安全[1])         从一个域上加载的脚本不允许访问另外一

同源策略与跨域访问

1. 什么是同源策略 理解跨域首先必须要了解同源策略.同源策略是浏览器上为安全性考虑实施的非常重要的安全策略.    何谓同源:        URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源.    同源策略:        浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性. (白帽子讲web安全[1])        从一个域上加载的脚本不允许访问另外一个域的文档

浏览器的同源策略和跨域访问

1. 什么是同源策略 理解跨域首先必须要了解同源策略.同源策略是浏览器上为安全性考虑实施的非常重要的安全策略.    何谓同源:        URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源.    同源策略:        浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性.        从一个域上加载的脚本不允许访问另外一个域的文档属性. 举个例子:      

同源策略和跨域-总结

目录: 1.同源策略 2.跨域 3.几种跨域技术 1.同源策略 什么叫同源? URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源.相反,只要协议,域名,端口有任何一个的不同,就被当作是跨域. e.g. 对于http://store.company.com/dir/page.html进行同源检测: URL 结果 原因 http://store.company.com/dir2/other.html 成功 仅路径不同 http://store.company.c

同源策略和跨域解决方案

同源策略 一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示例: URL 结果 原因 http://a.xyz.com/dir2/other.html 成功   http://a.xyz.com/dir/inner/another.html 成功   https://a.xyz.com/secure.html 失败 不同协议 ( https和http ) h

同源策略与跨域问题

在前后端通信时,有时会遇到跨域问题,接下来将从以下几个方面进行跨域详解. 1. 为什么会有跨域问题? 2. 什么是同源策略? 3.前后端通信方式有哪些? 4.解决跨域通信的方式有哪些? 5.解决跨域方式详细说明 为什么会有跨域问题? 答:是由于浏览器的同源策略. 什么是同源策略? 答:同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能. 同源策略限制了从一个源加载的文件或脚本如何与另一个源的资源进行交互.这是一个用于隔离潜在恶意文件的安全机制. 那什么

浏览器的同源策略及跨域解决方案

同源策略 一个源的定义 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源. 举个例子: 下表给出了相对http://a.xyz.com/dir/page.html同源检测的示例: URL 结果 原因 http://a.xyz.com/dir2/other.html 成功   http://a.xyz.com/dir/inner/another.html 成功   https://a.xyz.com/secure.html 失败 不同协议 ( https和http ) h