Login 엔드포인트는 공격자가 추측을 던져볼 수 있는 유일한 곳이야. 나머지는 전부 이 엔드포인트가 발급한 session 으로 걸러지고. 이 라우트 하나만 제대로 하면 나머지 layer 는 따라와.
각 줄이 중요한 이유
| 줄 | 방어하는 것 |
|---|---|
| Pre-check blacklist | bcrypt 비용을 치르기 전에 걸러서, 아는 나쁜 IP 에 CPU 를 안 씀 |
| Pre-check attempt count | 6번째 시도가 추측 성공 전에 차단 |
| 실패 시 constant-time 지연 | 응답 시간이 답을 알려주지 않게 함 (PIN 길이, bcrypt 비용) |
| 실패 시 증가, 성공 시 clear | 오타 몇 번 때문에 영원히 잠기지 않도록 counter 를 되돌림 |
| HttpOnly, Secure, SameSite=strict | 표준 쿠키 강화 (Track 2) |