横向越权与纵向越权

越权定义:一个正常的用户A一般只可以对本身的一些信息进行增删改查,可是因为程序员的一时疏忽未对信息进行增删改查的时候没有进行一个判断,判断所须要操做的信息是否属于对应的用户,能够致使用户A能够操做其余人的信息。​程序员

横向越权定义:攻击者尝试访问与他拥有相同权限的用户的资源。Web应用程序接收到用户请求,修改某条数据时,没有判断数据的所属人,或者在判断数据所属人时从用户提交的表单参数中获取了userid。致使攻击者能够自行修改userid修改不属于本身的数据。全部的更新语句操做,均可能产生这个漏洞。数据库

纵向越权定义:低级别攻击者尝试访问高级别用户的资源。因为Web应用没有作权限控制,或仅仅在菜单上作了权限控制,致使恶意用户只要猜想其余管理页面的URL,就能够访问或控制其余角色拥有的数据或页面,达到权限提高的目的。cookie

越权解释与cookie解决办法:http://blog.csdn.net/tanzhen1991910/article/details/53220593
session

 重置密码:app

 1     public ServerResponse<String> resetPassword(String passwordOld, String passwordNew, User user) {
 2         //防止横向越权,要校验一下这个用户的旧密码,必定要指定是这个用户,由于咱们会查询一个count(1),若是不指定id,那么结果就是true即count>0
 3         //其实也就是要旧密码和用户名要匹配
 4         int resultCount = userMapper.checkPassword(MD5Util.MD5EncodeUtf8(passwordOld), user.getId());
 5         if(resultCount == 0) {
 6             return ServerResponse.createByErrorMessage("旧密码错误");
 7         }
 8         //将新密码md5加密后更新到数据库中
 9         user.setPassword(MD5Util.MD5EncodeUtf8(passwordNew));
10         //其实这里也是能够直接调用跟上面同样的updatePasswordByUsername函数进行更新的
11         int updateCount = userMapper.updateByPrimaryKeySelective(user);
12         if(updateCount > 0) {
13             return ServerResponse.createBySuccessMessage("密码更新成功");
14         }
15         return ServerResponse.createByErrorMessage("密码更新失败");
16     }
View Code

 

1     public ServerResponse<String> del(Integer userId, Integer shippingId) {
2         //防止横向越权,若是这里不加userId,就有可能出现:普通用户登陆以后,传一个不是本身的shippingId,而却能够更改数据库的状况
3         //因此这里要加上userId来进行匹配,避免横向越权问题
4         int resultCount = shippingMapper.deleteByShippingIdUserId(userId, shippingId);
5         if(resultCount > 0) {
6             return ServerResponse.createBySuccess("删除地址成功");
7         }
8         return ServerResponse.createByErrorMessage("删除地址失败");
9     }
View Code

 

1     public ServerResponse update(Integer userId, Shipping shipping) {
2         //防止横向越权问题,这里要从登陆的session信息中获取userId
3         shipping.setUserId(userId);
4         int rowCount = shippingMapper.updateByShipping(shipping);
5         if(rowCount > 0) {
6             return ServerResponse.createBySuccess("更新地址成功");
7         }
8         return ServerResponse.createByErrorMessage("更新地址失败");
9     }
View Code
相关文章
相关标签/搜索