티스토리 뷰

API 서비스 (아이디 중복 확인 구현) 개발 후 테스트를 진행하던 중에 계속해서 403 오류가 났습니다.

이에 대한 해결 과정을 잊어버리기 전에 기록해봅니다.

 


 

⭕ build.gradle에서 Springboot version 3.2.1로 업그레이드

3.2.0의 고질적인 문제라고 하여 아래의 두 가지를 수정해주었습니다.

  • build.gradle 파일에서 Springboot 버전 3.2.1 로 업그레이드

plugins {
	id 'java'   // java 프로젝트로 설정
	id 'org.springframework.boot' version '3.2.1'   // 3.2.1 버전의 스프링 부트로 설정
	id 'io.spring.dependency-management' version '1.1.4'  // 스프링 부트의 의존성 관리 플러그인을 사용
}

 

 

 

 

⭕ CSRF 추가

WebSecurityConfig에서 http.csrf(csrf -> csrf.disable()) 를 추가해줬습니다.

 

 

이렇게 두 가지를 수정해주었더니 정상적으로 테스트 해볼 수 있었습니다.

 

 


 

 

🧐 CSRF (Cross Site Request Forgery) 란?

그렇다면 CSRF란 무엇일까요?

'사이트 간 요청 위조' 라는 뜻으로, 다른 오리진을 가진 사이트에서 form 요청을 보내는 것 입니다.

일반 사용자가 악의적인 공격자에 의해 CRUD 등의 행위를 특정 웹사이트에 요청하도록 만드는 공격입니다. 

 

이를 방어하기 위해서는 다양한 방법이 있으며, 스프링 시큐리티의 애노테이션인 @EnableWebSecurity는 기본적으로 CSRF 공격을 방지하는 기능을 지원합니다.

 

즉, 스프링 시큐리티가 적용되면서 CSRF 공격 방어가 활성화되어 이로 인해 다른 사이트의 요청으로 인지한 것 입니다.

 

그래서 스프링 시큐리티의 CSRF 방지 기능을 비활성화 하는 http.csrf().disable(); 또는 http.csrf(csrf -> csrf.disable());

 명령어가 필요합니다.

 

하지만 실제로 애플리케이션을 배포할 경우엔 이 방법은 권장하지 않습니다!

테스트 시에 csrf() 메서드를 추가하는 방법도 있습니다.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함