📁 删除他人文件

File IDOR Vulnerability

👤 当前用户

未登录

📋 所有文件

加载中...

🧪 IDOR 攻击演示

💡 攻击方式:

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,并在每次操作时校验文件归属。