#574·litemall

WxFeedbackController中的submit接口疑似存在水平越权漏洞

Author: kingkingkingsonCreated Jan 22, 2026Updated Jan 22, 2026

问题描述

WxFeedbackController中的submit接口中,直接不经过任何身份校验传入了用户iduserId,并且根据这个userId查询用户,修改用户数据。如果已登录的用户A通过直接调用接口传递用户B的userId,那么就可能造成潜在的跨用户数据修改的水平越权漏洞。

代码分析

如下方所示,不存在任何任何的对于用户身份的校验

java
    /**
     * 添加意见反馈
     *
     * @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层接口传递