Frontend Validation Bypass
很多开发者只在前端隐藏管理功能,认为用户看不到就安全了。
但攻击者可以直接调用后端 API!
根据角色显示不同的功能按钮:
请先登录查看界面
💡 注意:非管理员看不到"管理日志"按钮,但可以直接调用 API!
直接调用管理员接口(绕过前端):
// 前端代码(只隐藏按钮)
{currentUser.role === 'admin' && (
<button onClick={getAdminLogs}>管理日志</button>
)}
// ❌ 后端没有校验
router.get('/admin/logs', (req, res) => {
res.json(adminLogs) // 直接返回,不校验权限
})
// ✅ 后端必须校验
router.get('/admin/logs', (req, res) => {
if (currentUser.role !== 'admin') {
return res.status(403).json({ error: '权限不足' })
}
res.json(adminLogs)
})