배포 이후
3번째 글에서 로그인·댓글·방명록을 넣고 사이드바를 걷어내면서 이제 좀 완성됐다고 생각했다. 그런데 그 이후로 겪은 건 전부 눈에 안 보이던 곳에서 터진 사고들이었다. 기능을 추가하는 것보다, 이미 배포된 걸 지키는 쪽이 더 어렵다는 걸 체감한 구간이다.
보안 점검
익명 로그인 사용자를 추적할 수 있다는 걸 알게 되면서 보안 감사를 시작했고, 그 과정에서 몇 가지가 같이 걸려나왔다.
Fly.io는 프록시 뒤에서 도는데, trust proxy를 안 걸어두면 모든 요청이 프록시 IP 하나로 잡힌다. 그 상태로 rate limit을 걸면 한 명이 한도를 채우는 순간 전체 유저가 같이 막히는 어이없는 버그로 이어질 뻔했다. 이걸 고치던 중 express-rate-limit에 IP를 직접 넣었다가 IPv6 검증 에러(ERR_ERL_KEY_GEN_IPV6)로 서버가 즉시 죽는 것도 겪었다.
app.(, );
: req.?. ?? (req. ?? ),
