-
Spring Boot | CSRF 설정 (Spring Security)▼ Backend/스프링 (Spring) 2021. 8. 6. 15:44반응형
▶ CSRF(Cross site request forgery)
크로스 사이트 요청 위조, XSRF라고도 말한다. 웹 사이트의 취약점을 이용하여 이용자가 의도하지 하지 않은 요청을 통한 공격을 의미한다. 실제 서버에서 받아온 페이지가 아닌 위조된 페이지에서 요청을 보내는 행위이며, 이 행위를 방지하기 위해 서버에 들어온 요청이 실제 서버에서 허용한 요청이 맞는지 확인하기 위해서 토큰을 생성하여 검증한다.
자세한 내용은
Maven
version의 경우 https://mvnrepository.com/에서 찾아서 사용해도 된다.
<!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-config --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>5.5.1</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web --> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>5.5.1</version> </dependency>
Gradle
implementation 'org.springframework.security:spring-security-config' implementation 'org.springframework.security:spring-security-web'
WebSecurity 설정
WebSecurityConfigurerAdapter를 상속받아 configure 메서드를 오버라이드 한다.
모든 요청에 대해 CSRF Token을 생성한다.import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.csrf.CookieCsrfTokenRepository; @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()); } }
POST 전송 시 CSRF Token값을 서버에 요청할 때 같이 넘겨준다.
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}">
브라우저 Cookies에서도 Token이 생성된 걸 확인할 수 있다.
반응형'▼ Backend > 스프링 (Spring)' 카테고리의 다른 글
Spring Boot | Gradle, Jar 빌드&배포하기 (3) 2021.10.08 SpringBoot | lombok cannot find symbol (getter, setter) (0) 2021.08.23 Spring Boot | 인터셉터(Interceptor) 적용하기 (0) 2021.08.04 Spring Boot | return jsonView 사용, JSON 데이터로 응답 (0) 2021.08.04 Spring Boot | Thymeleaf Layout 공통 Header, Footer 설정하기 (0) 2021.07.22