微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

web安全-浏览器的同源策略(一)

同源策略是一种约定,是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器的正常功能都会受到影响。

我们在浏览器中浏览网页时,一般要在地址中输入网页地址,一个URI地址一般包括:http(s)://host(domain):port/path,浏览器中所谓的源是指:协议、地址、端口一起组成的一个整体。一个页面,通过其访问的协议、地址、端口限定了所属的源,页面中的所有的资源包括js、img、css等,不论资源的地址是哪里,其同页面具有相同的源。当通过脚本去获取数据时,如果获取数据的地址同页面不具有相同的源,即使获取到数据,浏览器也会拦截获取到的数据,并中止后续的执行,典型的例子是xmlhttprequest。下面通过一个简单的例子来说明一下同源策略。

一个http://a.com/xxx页面A,页面中包含jquery的script脚本B,脚本的地址为http://b.com/jquery.js,我们在页面A中执行了一个ajax的请求,请求的地址为http://a.com/ajax获取到数据,后续的逻辑正常的执行,当我们的请求地址换为http://b.com/ajax时,即使获取到了数据也无法进行执行,浏览器会提示错误。原因是应为浏览器的同源策略将数据拦截中止后续执行。

uri domain
http://a.com/xxx http://a.com
http://b.com/jquery.js http://a.com
http://a.com/ajax http://a.com
http://b.com/ajax http://b.com

同源策略在一定层度上保证了安全性,但是,对于跨不同的域请求数据带来了不便。随着互联网的发展,为xmlhttprequest请求的跨域访问提供了新的标准,通过response中的header中是否含有Access-Control-Allow-Origin来判断是否可以后续继续执行。这是基于信任javascript无法控制该http头信息,如果这个基础被打破,这个方式也将不再安全。同时,如果执行的脚本请求的地址是一个不法地址,此时也将不再安全。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐