数据越权访问心得

数据越权访问,又称BAC( Broken Access Control )。属于一种常见错误, 危害性极大。

具体情形如下:用户A通过B平台购买C买家的货物。对于用户A的地址,A,B,C三家都可以看到。他的方式是客户端通过调用后台的一个服务得到买家A的信息,一般会用类似这样一个方法get*ById(String id)。如果这个id被某些别有用心的人获取并且改掉,那么,他基本就可以得到所有的客户信息了。

改正的方法也很容易,就是对于客户端请求的id以及请求人的身份做对比,如果不一致,则不做查询。

但是问题在于,这个方法被多个地方调用,那么我们就要在多个地方进行修改,此时就要考虑到多个开发人员的情况,你不能保证每个人都会做这个判断。而且,这种细粒度的方法他的使用场景非常多,根据方法来控制,是控制不住的。那么我们就需要重新审视get*ById这个api,对于平台运营商系统的使用场景是没有问题的,但是对于平台商家后台和消费者系统,我们需要的是get*ByIdAndMerchantId和getMy*ById的这种API。

但是,即使我们增加了这两种API,依然不能很好的控制程序员来依法使用这两个API,因为get*ById实在是太好用了,某些偷懒的程序员或者是后来的不知情的人一定会优先选择这个方法。

一个在实际中采取的解决方案是:把这三个API封装到不同的服务(Service)或包(Package)中,并在不同的项目中设置仅对自己的场景可见。

在系分时,系分人员要充分注意到不同的service或者package的作用,让开发者即使不清楚相关的安全考量和安全开发知识,依然能够开发出符合标准的应用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值