11.5 资料查看与修改

用户的资料操作涉及权限问题,其实这里主要介绍的是越权漏洞的利用场景,为了保护用户的隐私,大多数网站提供了用户权限控制的功能,用户可以自己设置个人资料是否允许别人查看,在权限控制方面,主要有以下几种利用场景:

1)未验证用户权限 。这里说的未验证用户权限是指直接修改当前资源ID即可浏览该资源,没有验证当前这个资源是否属于当前用户,比如用户A的订单ID是111,用户B的订单ID为222,用户A登录后查看自己订单详情的时候,将URL中的订单ID参数改为222即可看到用户B的订单,2014年的时候阿里巴巴国际贸易站因为这个漏洞被炒作受了很大的舆论影响。

2)未验证当前登录用户 。上一种情况是没有验证当前这个资源是否属于当前用户,而这种情况是虽然程序绑定了用户ID和资源ID,但是这个用户ID是在访问资源时直接从cookie或者post、get参数里面获取的,所以我们只要在cookie里面把用户ID修改成另外一个用户的ID,就可以利用他的权限操作他的东西,这是目前见得比较多的一种情况。

上面介绍的两种情况,虽然只是列举用户资料查看,但是更多的出现是在用户资料修改,比如个人资料、订单、密码,等等。

对于用户注册功能我们需要用到的防御思路有:

·用户资源ID(订单ID、地址ID类似,等等)绑定到用户,只允许有权限的用户查看。

·当前用户信息存储到session,不放到request中,避免攻击者修改当前用户ID。