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头信息,如果这个基础被打破,这个方式也将不再安全。同时,如果执行的脚本请求的地址是一个不法地址,此时也将不再安全。

猜你喜欢

转载自www.cnblogs.com/zp900704/p/12333359.html
今日推荐