피드로 돌아가기
Why sameSite: "lax" doesn't save your Next.js admin routes from CSRF
Dev.toDev.to
Security

sameSite: lax 설정을 통한 CSRF 방어의 허점과 검증 체계 구축

Why sameSite: "lax" doesn't save your Next.js admin routes from CSRF

Oopssec Store2026년 5월 22일7intermediate

Context

Next.js 기반 관리자 페이지에서 Cookie 기반 인증만을 신뢰한 설계 구조. sameSite: lax 설정만으로 CSRF를 방어하려 했으나, Same-origin 요청 및 Top-level navigation의 허점으로 인해 권한 없는 상태 변경이 가능한 취약점 발생.

Technical Solution

  • Authentication과 Authorization의 결합으로 인한 검증 누락 해결
  • CSRF Token 도입을 통한 Request 무결성 및 요청 출처 검증 강화
  • Origin 및 Referer Header의 Allowlist 기반 대조를 통한 비정상 요청 차단
  • GET 요청 외 모든 상태 변경 API에 대해 명시적인 Origin 검증 로직 추가
  • httpOnly 설정을 통한 XSS 기반 Token 탈취 방어와 CSRF 방어 체계의 분리 운영
  • Multi-layered Defense 전략을 통한 단일 보안 설정 의존성 제거

- Cookie의 sameSite: lax 설정이 모든 CSRF 시나리오를 차단하지 않음을 인지할 것 - 상태 변경 API(POST, PATCH, DELETE 등)에 대해 CSRF Token 검증 로직을 필수 적용할 것 - 서버 측에서 Origin 및 Referer Header를 통해 요청 출처를 엄격히 제한할 것 - 인증(Authentication) 성공이 곧 해당 요청의 정당한 권한(Authorization)을 의미하지 않음을 설계에 반영할 것

원문 읽기