작성
·
38
·
수정됨
0
해당 필터는 단순히 Supplier로 감싸진 CsrfToken
을 getToken
()을 통해서 초기화를 진행하고 있습니다
GET 방식이면 어차피 CsrfFilte
r에서 바로 다음 필터로 넘어가고 POST면 CsrfFilter
에서 토큰 비교를 하기 위해서
초기화를 CsrfFilter
에서 하는데 CsrfCookieFilter
는 왜 필요할까요?
여러 가지 케이스로 디버깅하면서 좀 더 살펴봤는데
특정 페이지에서 POST 요청을 하는 버튼이 있으면 먼저 CSRF 토큰을 발급해서 클라이언트에 저장이 되어있어야 POST 요청에서 토큰을 쿠키에 꺼내어 검증할 수 있기 때문에
GET 요청에도 getToken()을 통해서 초기화가 진행되고
해당 초기화 과정에 saveCookie 로직이 있기 때문에
클라이언트 쿠키에 토큰이 저장되는 걸로 추측했습니다
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
CsrfCookieFilter
는 CSRF(Cross-Site Request Forgery) 보호를 위한 중요한 역할을 수행합니다. 기본적으로, CSRF는 클라이언트가 서버에게 상태 변경 요청(예: POST, PUT, DELETE)을 보낼 때 그 유효성을 확인하여 보안성을 강화하기 위해 사용됩니다. 이 필터의 목적은 클라이언트와 서버 간에 안전한 상태 변경 요청을 보장하기 위한 것입니다.
CsrfToken 초기화: CsrfCookieFilter
는 클라이언트가 한번 처음 GET 요청을 보내면 CsrfToken
을 생성하고 클라이언트 측에 전달합니다. 이는 주로 초기 페이지 로드 시 자동으로 토큰을 생성하고, 클라이언트 브라우저에 쿠키로 제공하기 위해 사용됩니다.
CsrfToken 전송: 서버는 CsrfToken을 쿠키로 전송하여 클라이언트 측에 저장하고, 이후 POST와 같은 민감한 요청을 보낼 때 클라이언트는 이 토큰을 요청 헤더에 포함해서 보내도록 요구합니다. 이 과정은 클라이언트와 서버 간에 동일한 출처의 요청임을 확인하는 역할을 합니다.
CsrfCookieFilter
는 CsrfToken
의 초기 전송을 담당하여 사용자가 수동으로 코드를 작성하지 않아도 되도록 도와줍니다. 또한, 필터는 보안을 강화하기 위해 클라이언트 측에 제외된 접근 권한이 없는 스크립트가 반입된 토큰을 사용할 수 없도록 제한합니다.
유사한 주제와 관련된 질문이 아래 URL에서 논의되었습니다:
- SecurityContext 관련 질문
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.