상세 컨텐츠

본문 제목

Spring Security [CSRF ATTACK]

SpringSecurity

by 성찬우 2022. 7. 27. 02:27

본문

CSRF 어택 이란?

인증된 유저의 계정을 사용해 악의적인 변경 요청을 만들어 보내는 기법이다. 

 

CORS를 사용 할때 특히 주의해야하는데 

타 도메인에서 보내오는 요청을 허용하기 때문이다. 

 

CSRF는 즉 원치 않는 요청을 만들어 보내는 것이라 할 수 있다. 

 

특히, HTTP 는 히든 필드가 있기 때문에 우리가 생각했던 곳이 아닌 다른곳으로 요청을 보내서 

예를 들어 공격자 웹사이트에서 은행으로 FORM을 보내 돈을 인출 할 수 도 있다는 것이다. 

 

더 쉽게 말하자면 CORS 같이 다른 도메인에서도 우리의 API를 요청을 해야하는 상황이 나온다면

이를 악용하기 쉽다 라는 것이다. 

 

그래서 우리  Spring Security 는 CSRF Filter를 제공한다. 

CSRF필터는 CSRF토큰을 사용하여 이를 방지 하게 해주는데 

 

resource 를 변경하는 요청을 보낼시에 토큰을 가지고 있는지 없는지를 판단하여 요청을 처리한다. 

 

이렇게 정상적인 요청은 CSRF 를 가지고 있음을 명심해야한다. 

 

1. CSRF 토큰을 이용한 방지 

  csrf Token 을 set해주고 matches하는지 확인하는 코드이다. 

사용하지 않을 경우 config에서 http.csrf().disable(); 하면 된다. 

 

하지만 웹페이지의 경우 리소스 변경이 자주 있기 때문에 disable 처리 하지 않는 것이 좋다. 

 

 

 

 

 

 

관련글 더보기

댓글 영역