Login 엔드포인트는 공격자가 추측할 수 있는 유일한 곳. 나머지 다는 login 엔드포인트가 발급한 session 으로 게이트. 이 한 라우트 제대로 하면 나머지 layer 따라와.
각 줄이 중요한 이유
| 줄 | 방어하는 것 |
|---|---|
| Pre-check blacklist | bcrypt 비용 지불 전; 알려진 bad IP 에 CPU 절약 |
| Pre-check attempt count | 6번째 시도가 추측 성공 전에 차단 |
| 실패 시 constant-time 지연 | oracle 로서 timing 제거 (PIN 길이, bcrypt 비용) |
| 실패 시 증가, 성공 시 clear | 몇 번 정당한 오타로 영원히 lockout 안 되게 counter reset |
| HttpOnly, Secure, SameSite=strict | 표준 쿠키 강화 (Track 2) |