▼ Backend/스프링 (Spring)
Spring Boot | CSRF 설정 (Spring Security)
Valar
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이 생성된 걸 확인할 수 있다.
반응형