CsrfCookieFilter 역할?
126
작성한 질문수 20
해당 필터는 단순히 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)을 보낼 때 그 유효성을 확인하여 보안성을 강화하기 위해 사용됩니다. 이 필터의 목적은 클라이언트와 서버 간에 안전한 상태 변경 요청을 보장하기 위한 것입니다.
CsrfToken 초기화:
CsrfCookieFilter는 클라이언트가 한번 처음 GET 요청을 보내면CsrfToken을 생성하고 클라이언트 측에 전달합니다. 이는 주로 초기 페이지 로드 시 자동으로 토큰을 생성하고, 클라이언트 브라우저에 쿠키로 제공하기 위해 사용됩니다.CsrfToken 전송: 서버는 CsrfToken을 쿠키로 전송하여 클라이언트 측에 저장하고, 이후 POST와 같은 민감한 요청을 보낼 때 클라이언트는 이 토큰을 요청 헤더에 포함해서 보내도록 요구합니다. 이 과정은 클라이언트와 서버 간에 동일한 출처의 요청임을 확인하는 역할을 합니다.
CsrfCookieFilter는 CsrfToken의 초기 전송을 담당하여 사용자가 수동으로 코드를 작성하지 않아도 되도록 도와줍니다. 또한, 필터는 보안을 강화하기 위해 클라이언트 측에 제외된 접근 권한이 없는 스크립트가 반입된 토큰을 사용할 수 없도록 제한합니다.
유사한 주제와 관련된 질문이 아래 URL에서 논의되었습니다:
- SecurityContext 관련 질문
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
로그아웃-logout()-2 강에서 겟방식 로그아웃 호출 후 화면이동 질문입니다.
0
34
2
단원별 소스코드
0
63
2
CustomAuthenticationProvider 추가 관련 문의
0
77
2
AOP 의존성 명칭 변경
0
73
1
빈 1개 등록 시 다른 해결 방법
0
70
1
@Bean으로 AuthenticationProvider를 등록 시 http.authenticationProvider 함수를 이용해서 추가해줘야되나요?
0
87
2
OIDC의 id token에 담긴 데이터에 대해
0
78
1
loginPage("/loginPage") 질문드립니다.
0
69
1
@EnableWebSecurity
0
148
1
트랜잭션과 롤백
0
99
1
68. 인증 이벤트 - AuthenticationEventPublisher 활용 강좌 음성 문제
0
91
2
AuthenticationManager 사용 방법
0
153
2
HttpSecurity.authorizeHttpRequests() - 2 강의 부분에 대한 질문
0
108
2
spring security 6.3에서는 HttpSecurity가 만들어지기 전 WebSecurity가 먼저 만들어지는게 맞나요??
0
191
1
init(B Builder), configure(B builder) 에 대하여 질문 드립니다.
0
109
2
메타 주석 질문
0
69
1
동시세션제어 기능에서 로그아웃하기
0
150
3
로그인 후, redirect 에서 error
0
139
3
Session 생성 타이밍에 대한 질문
0
86
2
강의 참고 내용을 개발 로그로 작성해도 될지 문의드립니다.
0
135
2
customAuthentication 관련
0
132
2
authenticationManagerBuilder 주입받은거 vs 만든 거
0
114
1
UserDetailsService()에서 UserDetail이 아닌 타입을 반환할 수 있나요?
0
101
1
9:28 패턴 3의 경우 마지막으로 설정한 것만 적용되는 것 같습니다.
0
162
2





