CSRF 토큰

gutos15·2021년 2월 1일
0

Spring Security

목록 보기
1/1

Spring Security의 기본 설정

스프링 프로젝트에 Spring Security를 적용하면 자동으로 CSRF에 대한 설정이 적용됩니다.

Spring Security는 Spring 기반의 어플리케이션에서 인증,권한 등의 보안을 담당하는 프레임워크입니다.

그럼 CSRF는 뭔가요?

CSRF란?

Cross Site Request Forgery의 줄인말입니다.
직역해 보면 '교차 사이트 요청 위조'네요.

다음 상황을 봅시다.

  • 나는 A사이트에 접속해 있는 상태
  • B사이트에서 A사이트로 HTTP Request를 보내는 링크를 누름
  • A사이트는 HTTP Request가 내가 보낸줄 알고 Response

예를 들어 네이버 검색 을 누르면 A사이트는 현재 사이트, B사이트는 네이버 검색이 되는 것입니다.

검색과 같은 단순한 요청이라면 위의 링크와 같이 문제없이 나오겠습니다만.. 만약 회원 정보와 같은 중요한 정보의 경우는 어떨까요?

CSRF Token이 적용된 페이지

간단한 회원가입 요청 페이지를 보겠습니다.

이메일과 패스워드를 입력하고 Submit을 누르면 서버에 HTTP POST요청이 갈겁니다.

그런데 Request가 가지 않습니다.
403 Forbidden은 서버가 요청은 받았지만 권한이 없어 거절하였다는 뜻입니다.

Spring Security를 적용하면 기본적으로 CSRF에 대한 기능이 적용되기 때문에, form을 사용할 때 CSRF에 대한 규칙을 따라주지 않으면 이렇게 요청을 하지 못하도록 막아버립니다! form태그에 추가적인 작업이 필요하겠군요.


뭔가 바뀐것을 눈치채셨나요?

input type이 hidden인 태그를 하나 만들어주고, 거기에 name = _csrf.parameterNamevalue=_csrf.token을 넣어주면 HTTP Session의 생명주기와 같은 CSRF Token을 손쉽게 이용할 수 있습니다!

0개의 댓글