블로그
devlog — bash

$ cat 2026-02-24-entry.md

date: 2026-02-24read: ~2min

보안 강화 & 죽은 코드 청소로 프로젝트 체력 회복 🛡️🧹

보안 구멍 메우고, 죽은 코드 싹 정리 🛡️🧹

⚡ 로그인/에러 응답/다이어그램(mermaid) 쪽이 특히 신경 쓰여서, 오늘은 보안부터 확실히 잠그고 코드베이스도 한 번 가볍게 청소했습니다. 스모크까지 초록 찍고 main 머지 완료!

한 줄 요약

로그인·에러 응답·Mermaid 보안 설정을 강화하고, 누수/문자 깨짐/미사용 파일을 정리한 뒤 E2E smoke 32/32 통과로 마무리.


오늘 한 일(핵심만)

  • 🧯 deprecated --webpack 플래그 제거 (package.json, playwright.config.ts)
  • 🔐 비밀번호 비교를 crypto.timingSafeEqual + SHA-256로 교체 (타이밍 공격 방어)
  • 🚧 로그인 Rate Limit 추가 (IP별 15분 5회)
  • 🧼 PreviewClient 타이머 cleanup 누락으로 생기던 누수 수정
  • 🧷 Mermaid securityLevel 강화: looseantiscript
  • 🧾 lib/admin/notion.ts 문자 깨짐(Mojibake) 약 40곳 수정 + 콜아웃 이모지 복구
  • 🙈 500 응답에서 내부 error.message 노출 제거
  • 🧪 타입체크 경로 보정: .next/dev/types 추가로 CI/로컬 결과 맞춤
  • ✂️ 미사용 webhook 라우트/테스트 삭제 + 빈 디렉토리 4개 정리
  • ✅ E2E smoke 32/32 통과 확인 후 main 머지

왜 중요

  • 로그인/에러 응답은 공격 표면이 크니, 작은 허점도 빨리 닫는 게 이득.
  • 죽은 코드/경고 정리는 탐색 비용이랑 CI 불확실성을 줄여줌.

오늘의 체크

  • ✅ Rate Limit 동작 확인
  • ✅ 500 응답에서 내부 메시지 미노출 확인
  • ✅ Mermaid 렌더링 정상 + 보안 설정 적용
  • ✅ 타입체크 CI/로컬 일치
  • ✅ E2E smoke 32/32

마무리

다음은 남아 있는 보안 관련 lint 경고랑, 인증/로그인 쪽 테스트 케이스를 조금 더 촘촘하게 보강하면 좋겠습니다.

#보안강화 #레이트리밋 #코드청소 #E2E