数据越权访问心得

数据越权访问,又称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的做用,让开发者即便不清楚相关的安全考量和安全开发知识,依然可以开发出符合标准的应用
相关文章
相关标签/搜索