Web安全——同源策略理解

前提

最近在学习Web安全的过程中接触了同源策略这么一条基本的安全原则,但是一直对其中的部分问题有所不解,经过几天的学习和查找资料,现在对Web的同源策略作一个简单的概括。

同源策略概述

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

我们将使用拆字法来理解同源策略相关的问题,首先我们将“同源策略”拆分为两个部分,第一个是 “同源” ;第二个是 “策略”

一、同源:同一个来源

首先我们弄懂什么算是同一个来源(字面上):以http://a.bcd.com/dir1/test1.html为例子

请求地址结果原因
http://a.bcd.com/dir1/test2.html成功同一域名,相同文件夹
http://a.bcd.com/dir2/test.html成功同一域名,不同文件夹
https://a.bcd.com/dir1/test2.html失败不同协议,http与https
http://a.bcd.com:8000/dir2/test2.html失败不同端口
http://a.efg.com/dir2/test2.html失败不同域名

以上表格非常直观的表述了什么算是同一个来源的问题。

对于这个问题我们不多作讲解,因为大家都能理解同源策略的本质就是防止跨域资源访问。那么同源的概念也就十分好理解。而大多数人不能理解实际上是策略的问题,因为这一个部分无关代码,是一个和“人”相关的概念。

二、策略:为了客户安全

为了理解策略相关的概念,我们需要有一些实验的结果(实验过程的代码就不贴出来了):

  • 实验一、不使用JS进行跨域请求发送,使用form表单的submit方法发送Get跨域请求,服务器不对响应头进行设置。

  • 结果:请求发送,服务器端接受到Get请求,返回码为200,浏览器显示拦截了跨域请求

  • 实验二、使用Ajax发送跨域请求,服务器不对响应头进行设置

  • 结果:请求发送,服务器端接受到请求,返回码为200,浏览器显示拦截了跨域请求

实验一、二结果分析:

服务器不对跨域请求进行任何甄别,只要请求正确,服务器会正常返回内容,而内容在浏览器被拦截。

这说明了一个很重要的点:
同源策略是浏览器策略,并且同源策略不影响服务器端的操作和响应。

事实上这就说明了这一条策略最关键的一个点,整个策略是为了浏览器,也就是为客户而实现的。因此同源策略保护了使用浏览器的客户,这一条是客户端安全中最重要的原则,我们所要保护和黑客所要窃取的资源都是客户的资源,这也就可以解释为什么关闭浏览器同源策略对客户本身是危险的:因为客户会因为同源策略的关闭而无法保证自己不会被Cookie劫持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值