File IDOR Vulnerability
1. 以 zhangsan (ID:1) 登录
2. 尝试删除 lisi 的文件 doc_003
3. 或删除 admin 的机密文件 doc_004
4. 观察文件是否被删除
// ❌ 有漏洞:不校验文件归属
router.delete('/file/:id', (req, res) => {
delete files[req.params.id] // 直接删除
res.json({ success: true })
})
// ✅ 安全:校验文件归属
router.delete('/file/:id', (req, res) => {
const file = files[req.params.id]
if (file.userId !== currentUser.id) {
return res.status(403).json({ error: '无权删除' })
}
delete files[req.params.id]
res.json({ success: true })
})
某云存储平台 IDOR 漏洞:
攻击者通过遍历文件ID,删除了数千名用户的私密文件,造成严重数据丢失。
修复方案:使用 UUID 替代自增ID,并在每次操作时校验文件归属。