본문 바로가기

웹 해킹/CSRF

CSRF 대응방안 3가지

CSRF(Cross Site Request Forgery)란?

: 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹 사이트에 요청하게 하는 공격이다.

 


 

1.   CSRF 토큰

사용자가 보내는 요청 폼에 랜덤한 토큰을 삽입한다. 서버는 이 토큰을 세션이나 db에 저장해두고, 사용자가 폼을 제출할 때마다 서버는 저장된 토큰과 비교해서 일치하는 경우 요청을 처리한다.

 

하지만 xss 공격이 가능한 경우에 csrf 토큰을 탈취할 수 있다.

 

 

2.  Referer Header 확인

Referer Header란 요청이 어디서 왔는지 확인하는 헤더다.

 

일반적인 상황에서 비밀번호 변경 요청은 마이페이지에서 일어나지만 csrf 공격이 발생한 경우 게시판에서 일어날 수 있다.  이렇게 뜬금없는 곳에서 발생하는 요청을 막기위해 Referer 검증을 실시한다.

 

Referer는 조작이 불가하기 때문에 서버에서 제대로 확인한다면 이는 우회 방법이 없다. 하지만 간혹가다 Referer를 지우고 보내면 처리되는 경우가 있다. 

 

이런 경우에는 <meta name="referer" content="no-referer"> 이용하여 우회한다.

 

 

3. 인증정보 추가

가장 근본적인 대응 방법이다.

 

공격자가 파라미터를 임의로 세팅하지 못하도록 요청 폼에 인증정보를 추가하는 방식이다.

 

예를 들어 비밀번호 변경 요청 시 기존 비밀번호를 함께 입력하도록 구현한다.

 

이 방법은 공격자가 미리 피해자의 인증정보를 알고 있지 않은 한 우회가 불가능하기 때문에 가장 확실한 보안 방법이다.

 

 

 

 

 

 

 

 

'웹 해킹 > CSRF' 카테고리의 다른 글

CSRF란? (정의, 취약점, XSS와의 차이점)  (2) 2024.01.22