인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

bae jewoo님의 프로필 이미지
bae jewoo

작성한 질문수

스프링 시큐리티 완전 정복 [6.x 개정판]

CSRF 통합

CsrfCookieFilter 역할?

작성

·

38

·

수정됨

0

해당 필터는 단순히 Supplier로 감싸진 CsrfToken
getToken()을 통해서 초기화를 진행하고 있습니다

GET 방식이면 어차피 CsrfFilter에서 바로 다음 필터로 넘어가고 POST면 CsrfFilter에서 토큰 비교를 하기 위해서
초기화를 CsrfFilter에서 하는데 CsrfCookieFilter는 왜 필요할까요?


여러 가지 케이스로 디버깅하면서 좀 더 살펴봤는데
특정 페이지에서 POST 요청을 하는 버튼이 있으면 먼저 CSRF 토큰을 발급해서 클라이언트에 저장이 되어있어야 POST 요청에서 토큰을 쿠키에 꺼내어 검증할 수 있기 때문에
GET 요청에도 getToken()을 통해서 초기화가 진행되고
해당 초기화 과정에 saveCookie 로직이 있기 때문에
클라이언트 쿠키에 토큰이 저장되는 걸로 추측했습니다



답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

CsrfCookieFilter는 CSRF(Cross-Site Request Forgery) 보호를 위한 중요한 역할을 수행합니다. 기본적으로, CSRF는 클라이언트가 서버에게 상태 변경 요청(예: POST, PUT, DELETE)을 보낼 때 그 유효성을 확인하여 보안성을 강화하기 위해 사용됩니다. 이 필터의 목적은 클라이언트와 서버 간에 안전한 상태 변경 요청을 보장하기 위한 것입니다.

  1. CsrfToken 초기화: CsrfCookieFilter는 클라이언트가 한번 처음 GET 요청을 보내면 CsrfToken을 생성하고 클라이언트 측에 전달합니다. 이는 주로 초기 페이지 로드 시 자동으로 토큰을 생성하고, 클라이언트 브라우저에 쿠키로 제공하기 위해 사용됩니다.

  2. CsrfToken 전송: 서버는 CsrfToken을 쿠키로 전송하여 클라이언트 측에 저장하고, 이후 POST와 같은 민감한 요청을 보낼 때 클라이언트는 이 토큰을 요청 헤더에 포함해서 보내도록 요구합니다. 이 과정은 클라이언트와 서버 간에 동일한 출처의 요청임을 확인하는 역할을 합니다.

CsrfCookieFilterCsrfToken의 초기 전송을 담당하여 사용자가 수동으로 코드를 작성하지 않아도 되도록 도와줍니다. 또한, 필터는 보안을 강화하기 위해 클라이언트 측에 제외된 접근 권한이 없는 스크립트가 반입된 토큰을 사용할 수 없도록 제한합니다.

유사한 주제와 관련된 질문이 아래 URL에서 논의되었습니다:
- SecurityContext 관련 질문

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

bae jewoo님의 프로필 이미지
bae jewoo

작성한 질문수

질문하기