현울의 끄적끄적

[Security] 비밀번호 재설정 기능을 토큰 폐기까지 포함해 설계한 방법

서론 비밀번호 재설정은 화면만 만들면 끝나는 기능처럼 보이지만, 실제로는 계정 보안 설계와 아주 가깝다. 특히 “토큰을 어떻게 발급할지”, “이미 발급된 토큰은 어떻게 무효화할지”, “운영 환경과 개발 환경에서 메일 전송을 어떻게 분리할지”까지 생각해야 비로소 안전한 기능이 된다. loslung에서는 2026년 4월 6일 PR #16에서 비밀번호 ...

[Network] CORS, 프록시, 런타임 env 문제로 403/401/500이 발생한 이유

서론 운영 환경에서 터지는 에러는 종종 하나의 원인으로 설명되지 않는다. loslung의 배포 히스토리에서도 403, 401, 500이 각각 따로 보였지만, 실제로는 CORS, 프록시 경로, 런타임 환경변수가 얽혀 있었다. 이번 글에서는 2026년 4월 2일 PR #8과 2026년 4월 6일 PR #15을 중심으로, 왜 이런 문제가 동시에 발생했는...

[Authentication] 쿠키 기반 인증에서 401이 발생했던 이유와 해결

서론 loslung 배포 히스토리에서 가장 오래 발목을 잡은 문제 중 하나는 401이었다. 브라우저에서는 분명 로그인 상태인데, 특정 API 요청은 백엔드에서 인증되지 않은 요청으로 처리되고 있었다. 처음에는 토큰 만료나 인증 로직 자체를 의심하기 쉬웠지만, 실제 원인은 토큰이 어디에 저장되어 있느냐보다 그 요청이 어떤 경로로 백엔드에 도착하느냐에...

[Database] PostgreSQL과 MySQL 차이점, 장단점, 선택 기준

서론 백엔드 개발에서 데이터베이스는 시스템의 안정성과 확장성을 좌우하는 핵심 요소다. 관계형 데이터베이스(RDBMS) 중 가장 널리 사용되는 두 축은 PostgreSQL과 MySQL이다. 둘 다 강력하고 안정적인 데이터베이스이지만, 설계 철학과 강점은 분명히 다르다. 이번 글에서는 PostgreSQL과 MySQL의 주요 차이를 실무 관점에서 비교하...