1-越权-横向越权

横向越权

横向越权就是:相同权限等级的用户,非法访问了本不该属于他的其他用户的私有资源或数据。

举例说明

⚙️ 用户信息篡改漏洞

① 漏洞代码

后端直接使用前端传入的用户ID修改数据,未校验归属权,比如只要登录了就可以调用这个接口

@PostMapping("/updateUser")
public void updateUser(String userId, UserDTO dto) {
    userService.update(userId, dto); // 直接使用前端传入的userId
}
② 攻击方式

用户A(ID=1001)将自己的请求 POST /updateUser?userId=1001 中的 userId 改为1002,即可修改用户B的数据

③ 修复方案
// 从会话获取当前用户ID
String currentUserId = SecurityContext.getUser().getId(); 
userService.update(currentUserId, dto); // 强制绑定当前用户

📦订单详情泄露

① 漏洞代码

系统提供订单详情查询接口,SQL查询直接拼接用户输入,没有校验用户ID,即只要登录了就可以传入订单id查询对应订单信息

String sql = "SELECT * FROM orders WHERE order_id = " + request.getParameter("orderId");
② 攻击方式

用户A(订单ID=123)修改参数为 orderId=124,即可查看用户B的订单详情

③ 修复方案

查询订单时带上用户ID,即不仅校验用户是否登录,还要校验订单是否是该用户的订单

String currentUserId = getCurrentUserId();
String sql = "SELECT * FROM orders WHERE order_id = ? AND user_id = ?";
preparedStatement.setString(1, orderId);
preparedStatement.setString(2, currentUserId); // 绑定当前用户

类似的还有订单删除等,也是一样

📁文件下载越权

① 漏洞代码

文件路径由前端传入

@GetMapping("/download")
public void downloadFile(String filePath, HttpServletResponse response) {
    FileUtils.copyFile(new File(filePath), response.getOutputStream());
}
② 攻击方式

用户A通过修改 filePath=…/userB/contract.pdf 下载他人文件

③ 修复方案

将文件ID与用户绑定,通过数据库查询真实路径

String fileId = request.getParameter("fileId");
File file = fileService.getFile(fileId, getCurrentUserId()); // 校验归属
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值