인증 관련 취약점으로, 세션 고정·약한 JWT 시크릿·브루트포스 허용 등이 포함됩니다.
// ❌ 취약: 약한 JWT 시크릿
const JWT_SECRET = 'secret'; // 1초 만에 크래킹
// ❌ 취약: algorithm 미지정 (none 공격)
jwt.verify(token, JWT_SECRET); // alg:none 허용 가능
// ❌ 취약: 로그인 시도 제한 없음
router.post('/login', (req, res) => {
// 횟수 체크 없이 바로 쿼리
});
// ✅ 안전: 강력한 랜덤 시크릿 + 알고리즘 명시
const JWT_SECRET = process.env.JWT_SECRET; // 최소 256bit 랜덤
jwt.verify(token, JWT_SECRET, { algorithms: ['HS256'] });
// ✅ 안전: Rate Limiting
const rateLimit = require('express-rate-limit');
const loginLimit = rateLimit({
windowMs: 15 * 60 * 1000, max: 5,
message: '로그인 시도 횟수 초과. 15분 후 재시도하세요.'
});
app.use('/login', loginLimit);