#573·litemall

WxAuthController中的profile疑似存在水平越权漏洞

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

问题描述

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

相关代码片段

  • 在下面的代码片段中,直接传入了userId,而没有添加任何的userid与当前实际登录用户的校验
java
     */
    @PostMapping("profile")
    public Object profile(@LoginUser Integer userId, @RequestBody String body, HttpServletRequest request) {
        if(userId == null){
            return ResponseUtil.unlogin();
        }
        String avatar = JacksonUtil.parseString(body, "avatar");
        Byte gender = JacksonUtil.parseByte(body, "gender");
        String nickname = JacksonUtil.parseString(body, "nickname");

        LitemallUser user = userService.findById(userId);
        if(!StringUtils.isEmpty(avatar)){
            user.setAvatar(avatar);
        }
        if(gender != null){
            user.setGender(gender);
        }
        if(!StringUtils.isEmpty(nickname)){
            user.setNickname(nickname);
        }

        if (userService.updateById(user) == 0) {
            return ResponseUtil.updatedDataFailed();
        }

        return ResponseUtil.ok();
    }

建议的修复

通过当前用户的登录token获取userId, 而非直接通过controller层接口传递