水平权限攻击
水平权限攻击,也叫作访问控制攻击。Web应用程序接收到用户请求,修改某条数据时,没有判断数据的所属人,或者在判断数据所属人时从用户提交的表单参数中获取了userid。导致攻击者可以自行修改userid修改不属于自己的数据。所有的更新语句操作,都可能产生这个漏洞。
防御
这种情况似乎很容易被忽略,包括我现在着手的一个项目也是才发现这样的一个问题。那么应该如何解决呢?其实也很容易。就是从用户的加密认证cookie中获取当前用户id,并且在执行的sql语句中加入当前用户id作为条件语句。由于cookie是加密的,所以攻击者无法修改加密信息。
垂直权限攻击
垂直权限攻击又叫做权限提升攻击。其原理是由于Web应用没有做权限控制,或仅仅在菜单上做了权限控制,导致恶意用户只要猜测其他管理页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。
防御
这种攻击很容易防御,只需要在每个页面的加载之前进行权限验证(用ticket存入cookie和session)即可。一个普通的权限系统,菜单是通过数据库中对应权限和角色来进行字符串拼接形成的,而不是静态的通过在页面上进行权限判断决定的。