同源策略

来源:互联网 发布:传奇霸业神威宝石数据 编辑:程序博客网 时间:2024/06/03 22:57
一 介绍
同源策略是JavaScript主要的安全策略,表示一个脚本只能读取与它同源的窗口或文档的属性,这样可以防止从一个站点载入的脚本获取或设置另一站点的文档属性。
例如,使用一段恶意的脚本代码在一个浏览器中运行,如果没有同源策略,此段恶意代码就有可能获取另一个浏览器窗口中的信息,而该窗口中有可能包含部分私有信息。
同源策略用来检测两个URL是否属于同一个源。
当一个脚本试图访问另一个窗口中的属性或方法时,浏览器会对URL进行检测,如果URL通过了检测,则允许访问属性,否则浏览器将会报错。
判断两个URL是否属于同源,需要满足以下条件。
l、协议相同
2、端口相同
3、域名相同
如果这3个条件中有任何一条不满足,就不允许两个脚本进行交互。
 
二 判断同源策略举例
URL是否通过检测说    明
http:// www.test.com /script1.js
http:// www.test.com /script2.js
通过相同的协议、端口和域
http:// www.test.com:8080/script1.js
http:// www.test.com /script2.js
不通过端口号不相同
http:// www.test.com /script1.js
https:// www.test.com /script2.js
不通过协议不相同
http:// www.test.com /script1.js
http://192.168.1.86/script2.js
不通过浏览器将不会识别IP:192.168.0.1
http:// www.test.com /script1.js
http:// www.bc110.com /script2.js
不通过域不相同
http:// www.test.com /js/script1.js
http:// www.test.com /vb/script2.js
通过相同的协议、端口和域
三 补充说明
同源策略是一种非常严格的安全策略,但是在某些情况下,同源策略也会带来一些麻烦。
例如,URL为one.test.com的文档中的脚本,可能需要访问URL为two.test.com的文档中的某个属性,这种情况有可能是合理的,但同源策略将不会允许这种情况存在。
为了使这种情况合理化,JavaScript使用document对象的domain属性,来截掉域名所匹配的一部分内容。
例如,在URL为http://www.test.com/data的文档脚本中和URL为http://data.test.com/的文档脚本中添加一行如下代码。
document.domain= 'test.com';
这两个文档中的脚本就可以进行交互,将不会受到同源策略的约束。
在默认情况下,domain属性存放的是装载文档的服务器主机名。设置这一属性时,需要使用有效的字符串,在字符串中最少需要拥有一个点符号“.”。
0 0
原创粉丝点击