采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这句话我没有理解清楚,为什么不指定用户,就会count>0,如果数据库中没有这个密码,也会返回count>0吗
你好,同学,也就是说,具体的一个查询结果,要指定是哪个用户的,也就是userid。
换句话说 结果集要和这个用户绑定。防止查出多余的数据~
老师说的有道理,如果不指定userid,有可能查出多余的数据,因为如果输入的是一个错误的密码,但是这个密码刚好是别人在数据库中存在的密码,得到的结果也能是 resultCount >0, 但是应该不会产生把别人的密码给修改掉吧,因为修改密码所用的代码是: int updateCount = userMapper.updateByPrimaryKeySelective(user); 而方法中的user参数是在session中取出来的,也就是修改的密码只能是当前登录的用户的,亲吻老师,这也是属于横向越权吗
附上 resetPassword(String passwordOld,String passwordNew,User user)方法的代码: public ServerResponse<String> resetPassword(String passwordOld,String passwordNew,User user){ //防止横向越权,要校验一下这个用户的旧密码,一定要指定是这个用户.因为我们会查询一个count(1),如果不指定id,那么结果就是true啦count>0; int resultCount = userMapper.checkPassword(MD5Util.MD5EncodeUtf8(passwordOld),user.getId()); if(resultCount == 0){ return ServerResponse.createByErrorMessage("旧密码错误"); } user.setPassword(MD5Util.MD5EncodeUtf8(passwordNew)); int updateCount = userMapper.updateByPrimaryKeySelective(user); if(updateCount > 0){ return ServerResponse.createBySuccessMessage("密码更新成功"); } return ServerResponse.createByErrorMessage("密码更新失败"); }
靠,在回复中代码好乱!!!
同学,问问题最好讲究方式,一张图都没有,怎么知道你是哪个部分的呢。。
登录后可查看更多问答,登录/注册
前后端分离,数据库接口设计,架构设计,功能开发,上线运维
10.3k 10
1.9k 22
1.4k 21
2.2k 21
2.0k 18