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 처리 하지 않는 것이 좋다.
SpringSecurity [SecuriyContextPersistenceFilter] (0) | 2022.07.27 |
---|---|
SpringSecurity [Async] 비동기 처리 (0) | 2022.07.22 |
SpringSecurity [WebAsyncManagerIntegrationFilter] (0) | 2022.07.15 |
SpringSecurity [JwtBuilder] (0) | 2022.07.06 |
SpringSecurity [JWT 메소드 구경하기] (0) | 2022.07.06 |
댓글 영역