🔗 权限继承错误

Permission Inheritance Flaw

👤 当前用户

未登录

📖 漏洞说明

权限判断逻辑错误,导致低权限用户获得高权限访问。

常见错误:使用 includes() 或模糊匹配判断权限。

🧪 权限校验测试

💡 以"编辑"角色登录,尝试请求 delete:all 权限。

编辑只有 write:content,但有漏洞的校验会通过!

🔬 漏洞代码

// ❌ 有漏洞:模糊匹配
function hasPermission(userPermissions, required) {
  return userPermissions.some(p => 
    p.includes('write') ||  // 有任何 write 权限就通过
    required.includes(p.split(':')[1])  // 模糊匹配
  )
}

// 编辑有 write:content
// 请求 delete:all
// 因为 write:content 包含 'write',所以通过!

// ✅ 安全:精确匹配
function hasPermission(userPermissions, required) {
  return userPermissions.includes(required)
}

📊 权限矩阵

角色 read:public read:own write:own write:content read:all write:all delete:all manage:users
guest
user
editor
admin