-
Notifications
You must be signed in to change notification settings - Fork 7.4k
Open
Description
问题描述
在WxFeedbackController中的submit接口中,直接不经过任何身份校验传入了用户iduserId,并且根据这个userId查询用户,修改用户数据。如果已登录的用户A通过直接调用接口传递用户B的userId,那么就可能造成潜在的跨用户数据修改的水平越权漏洞。
代码分析
如下方所示,不存在任何任何的对于用户身份的校验
/**
* 添加意见反馈
*
* @param userId 用户ID
* @param feedback 意见反馈
* @return 操作结果
*/
@PostMapping("submit")
public Object submit(@LoginUser Integer userId, @RequestBody LitemallFeedback feedback) {
if (userId == null) {
return ResponseUtil.unlogin();
}
Object error = validate(feedback);
if (error != null) {
return error;
}
LitemallUser user = userService.findById(userId);
String username = user.getUsername();
feedback.setId(null);
feedback.setUserId(userId);
feedback.setUsername(username);
//状态默认是0,1表示状态已发生变化
feedback.setStatus(1);
feedbackService.add(feedback);
return ResponseUtil.ok();
}建议的修复
通过当前用户的登录token获取userId, 而非直接通过controller层接口传递
Metadata
Metadata
Assignees
Labels
No labels