CSRF토큰이란?

Nam_JU·2022년 4월 9일
1

Spring

목록 보기
4/11

공부 배경

스프링 시큐리티로 회원가입-> 로그인을 구현하다가 403에러로 공부하게 되었다.


사진처럼 회원가입을 작성한후 가입버튼을 누르면 403에러가 나타나게된다.
단순히 로그인 페이지에서 403에러가 난다면 httpSecurity설정 오류일 가능성이 크다. 해당된다면 아래의 링크로 가도록 하자

https://velog.io/@jupiter-j/에러-스프링-시큐리티-에러-403-404


CSRF (Cross Site Request Forgery)

다른 사이트에서 유저가 보내는 요청을 조작하는 공격. 예시로는 이메일에 첨부된 링크를 누르면 내 은행계좌의 돈이 빠져나가는 방식의 해킹 등이 있다.
회원가입시 페이지를 바꿔치기 하는등의 방법으로 해킹을 하기도 하기 때문에 이를 방지하기 위한것이 CSRF 토큰이다

CSRF 토큰

서버에 들어온 요청이 실제 서버에서 허용한 요청이 맞는지 확인하기 위한 토큰

CSRF 토큰 로직

그렇다면 에러의 원인은 무엇이었을까?

CSRF 토큰 검사

사용자가 회원가입 페이지를 요청하고 서버가 응답해주는 페이지가 나타나는게 일반적이다. 그런데 스프링 시큐리티가 해당 페이지에 CSRF토큰을 자동으로 심는다. CSRF방어 기능은 Spring Security 3.2.0 이후부터 지원된다고 한다. 따라서 CSRF토큰을 설정해주지 않으면 해당에러가 나타나는 것이다.

스프링부트에서 CSRF 해제 방법

http.csrf().disable(); 을 HttpSecurity설정에서 넣어주면 해당 에러를 방지할 수 있다.

 @Override
    protected void configure(HttpSecurity http) throws Exception {
        //super 삭제 - 기존 시큐리티가 가지고 있는 기능이 다 비활성화 된다
       
       http.csrf().disable(); //csrf를 비활성화 하겠다
        http
                .authorizeRequests()
                .mvcMatchers("/","/css/**","/scripts/**","/plugin/**","/fonts/**","/api/**","/auth/**","/image/**")
                .permitAll();

        http
                .authorizeRequests()
                .antMatchers("/", "/user/**","/image/**", "/subscribe/**", "/comment/**", "/api/**","/auth/**")
                .permitAll()
                .anyRequest()
                .authenticated() ;



    }


참고자료

https://velog.io/@9rganizedchaos/토큰-토큰-토큰
https://codevang.tistory.com/282

profile
개발기록

0개의 댓글