CSRF Cross Site Request Forgery
사이트 간 요청 위조
웹 사이트의 취약점 공격 방법 중 하나이다. (서버에 직접적인 공격 X)
공격자는 사용자가 로그인한 상태에서 악의적인 웹페이지를 방문하게 만들어, 웹 페이지에서 사용자의 권한을 도용하여 서버에 악의적인 요청을 보낼 수 있다.
예를 들어, 사용자가 인터넷 뱅킹에 로그인한 상태에서 자동으로 계좌에서 돈을 이체하는 요청을 보내는 식으로 공격을 한다.
CSRF가 이루어지는 과정
- 사용자가 은행 사이트에 로그인을 한 상태이다
- 사용자가 피싱사이트에 접속한다(피싱메일이나, 팝업 광고를 통해)
- 공격자는 피싱사이트에 접속한 사용자로 가장하여 은행에 이체 요청을 전송한다.
- 사용자는 이체 요청을 한 적 없지만 이체가 실행된다
CSRF 대응 방법
1. CAPCHA
2. Referrer 검증법
요청이 들어올 때 request의 header에 담겨있는 referer 값을 확인하여 같은 도메인에서 보낸 요청인지 검증하여 차단하는 방법이다. 거의 대부분의 경우 이 방법을 통해 공격을 방어할 수 있다.
3. CSRF Token
Spring Security는 이런 공격을 방지하기 위해 CSRF 토큰을 사용한다. 서버는 사용자에게 HTML 폼을 제공할 때 CSRF 토큰을 생성하고, 사용자는 요청을 보낼 때 CSRF 토큰을 함께 보내야한다. 서버는 이 토큰을 검증하여 유효할 시에만 요청을 처리한다. 이렇게 하면 사용자의 권한을 도용하여 악의적인 요청을 보내도, 유효한 CSRF 토큰을 알지 못하기 때문에 공격에 실패한다.
'TIL' 카테고리의 다른 글
OpenID (OIDC) (0) | 2023.09.01 |
---|---|
OAuth2.0 (0) | 2023.08.28 |
[TIL-230827]Filter Interceptor (0) | 2023.08.28 |
[TIL-230827] 인증과 인가 (0) | 2023.08.27 |
[TIL-230629] 서블릿(Servlet)이란? (0) | 2023.06.29 |