-
CSRF (사이트 간 요청 위조)
- 웹 애플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹 페이지를 보안에 취약하게 한다거나 수정, 삭제 등의 작업을 하게 만드는 공격 방법을 의미한다.
- XSS와 SQL Injection과 비슷한데 XSS가 사용자가 특정 사이트를 신뢰한다는 점을 공격하는 거라면 CSRF는 특정 사이트가 사용자를 신뢰한다는 점을 공격하는 것이다.
- XSS : 악성 코드가 클라이언트에서 발생
- CSRF : 악성 코드가 서버에서 발생
CsrfFilter
- 서버는 모든 요청에 대해서 랜덤으로 생성된 토큰을 클라이언트에 전달하고, 클라이언트는 매 요청 시마다 해당 토큰을 HTTP 파라미터 또는 헤더로 서버에 전달한다.
- 요청 시 전달 된 토큰 값과 서버에 저장된 토큰 값을 비교한 후 일치하지 않으면 요청은 실패한다.
- Client
- <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" />
- HTTP 메소드 : PATCH, POST, PUT, DELETE
- Server
- http.csrf() : 활성화 (default)
- http.csrf().disabled() : 비활성화