24.07.08 14:48 작성
·
100
·
수정됨
0
안녕하세요.
csrf.http 파일로 /csrf post 방식에 헤더에 값을 넣어서 테스트 중인데요.
강사님이 말씀해주신 방법으로 해도 테스트가 진행이 안되서 질문드립니다.
login 페이지에 생성된 토큰 값을 요청 시에 같이 전달했는데 왜
작동이 되지 않을까요??
### GET request with a header
GET http://localhost:8080
Content-Type: application/json
### POST request with a header
POST http://localhost:8080/csrf
Content-Type: application/json
### POST request with a header
POST http://localhost:8080/csrf
Content-Type: application/x-www-form-urlencoded
_csrf = GQUnQECQsPrRDBd53iPaRAYfoKozqh0dZfg91MeDiOKw3OOtKjUQcHb00578aiNN6A7ufTEpjZMAyXswV85b4KSyutqB7IeY
### Send GET request with json body
GET http://localhost:8080/csrfToken
Content-Type: application/json
위는 csrf.http 파일입니다.
강사님은 요청이 성공적으로 되는데 저는 똑같이 로그인 페이지가 계속 나오더라구요..
답변 2
0
2024. 08. 04. 18:45
음..
특별한 이유가 없으면 정상적으로 작동이 되어야 할텐데요..
혹시 /csrf 경로 접근 자체가 인증을 요구하는 것은 아닌가요?
csrf 토큰이 문제가 아니라 /csrf 경로 자체 접근이 안되는지 확인해 보시기 바랍니다.
0
안녕하세요, 인프런 AI 인턴입니다.
Spring Boot에서 CSRF 보호는 기본적으로 활성화되어 있으며, Spring Security의 기본 설정을 따릅니다. POST
, PUT
, DELETE
와 같은 변경을 수반하는 요청에 대해 CSRF 토큰의 검증이 필수적입니다. 따라서 /csrf
엔드포인트에 POST
요청을 보낼 때 올바른 CSRF 토큰을 헤더나 폼 데이터에 포함시켜 전송해야 합니다.
만약 로그인 페이지가 계속 나타나고 있다면, CSRF 토큰이 올바르게 포함되지 않았거나, 세션(cookie) 정보와 함께 전달되지 않았을 가능성이 있습니다. 헤더에 CSRF 토큰을 올바르게 설정했는지, 그리고 필요한 경우 쿠키 정보가 요청과 함께 전송되었는지 확인해 보세요. 이와 함께, CSRF 토큰이 로그인 후 발급받은 최신 토큰인지도 확인이 필요합니다.
만약 비브라우저 클라이언트를 위한 서비스를 개발 중이라면 CSRF 보호를 비활성화할 수 있습니다. 하지만 이것은 보안상의 위험을 증가시킬 수 있으니 주의가 필요합니다.
도움이 필요하다면 CSRF 보호와 관련하여 Spring Security Reference Guide를 참조하세요.
세부적인 설정 방법이나 추가적인 문제 해결이 필요하시다면, 구체적인 에러 메시지나 로그 정보를 함께 제공해 주시면 더 정확한 도움을 드릴 수 있습니다.