CSRF(Cross-Site Request Forgery)

개발하는 구황작물·2022년 7월 21일
0

Security

목록 보기
7/10

CSRF란 인터넷 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 만드는 공격이다.

CSRF는 해커가 사용자의 컴퓨터나 서버를 해킹하여 이루어 지는 공격은 아니다. CSRF는 다음과 같은 조건에서 발생한다.

  1. 사용자가 보안이 취약한 서버로부터 인증을 받은 상태
  2. 쿠키 기반으로 서버 세션 정보를 획득할 수 있을 때
  3. 공격자가 서버를 공격하기 위한 요청방법을 미리 파악하고 있을때

위와 같은 조건이 만족되면 다음과 같은 과정으로 공격이 수행된다.

  1. 사용자는 보안이 취약한 서버에 로그인 한다.
  2. 로그인 이후 서버에 저장된 세션정보를 사용할 수 있는 SessionId가 사용자 브라우저 쿠키에 저장이 된다.
  3. 공격자는 서버에 인증된 브라우저의 사용자가 악성 스크립트 페이지를 누르도록 유도한다.
  4. 사용자가 피싱 사이트로 접근시 피싱 사이트는 사용자의 쿠키를 탈취하여 사용자로 가장하여 요청을 위조해 서버로 전송한다.
  5. 서버는 해당 요청에 대한 응답을 하게 되고 이로 인해 사용자가 의도치 않은 행동이 실행된다.

코드를 예시로 들어보면

<a href="https//examplebank/transfer?account_number=[공격자 계좌번호]&amount="1000000$">
공격자가 피싱 사이트에 이런 코드를 삽입하면 피싱 사이트에 접속하는 순간 공격자의 계좌번호로 100만 달러를 송금하게 된다.

CSRF 대응방법

  1. CSRF 토큰 사용 : 서버측에서 CSRF공격에 보호하기 위한 문자열을 유저의 브라우저와 웹 앱에만 제공한다.
  2. Same-site cookie : 같은 도메인에서만 세션, 쿠키를 사용하게 한다.
profile
어쩌다보니 개발하게 된 구황작물

0개의 댓글