사용자가 허가되지 않은 기능이나 데이터에 접근할 수 있는 취약점입니다. 인가(Authorization) 로직이 없거나 잘못 구현된 경우 발생합니다.
// ❌ 취약: user_id 검증 없음
router.get('/account/:id', requireLogin, (req, res) => {
const user = get('SELECT * FROM users WHERE id = ?',
[req.params.id]); // 누구 ID든 조회
res.render('account', { user });
});
// ✅ 안전: 본인 데이터만 접근
router.get('/account/:id', requireLogin, (req, res) => {
if (req.params.id != req.session.user.id) {
return res.status(403).render('error',
{ message: '접근 권한이 없습니다.' });
}
const user = get('SELECT * FROM users WHERE id = ?',
[req.session.user.id]);
res.render('account', { user });
});