[Network] CSRF란?

원알렉스·2020년 7월 1일
0

Network

목록 보기
3/3
post-thumbnail

CSRF (Cross Site Request Forgery)

  • 사이트간 요청 위조
  • 웹 애플리케이션 취약점 중 하나로 사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 한다거나, 수정, 삭제, 등록 등의 작업을 하게 만드는 공격방법을 의미합니다.

방어 방법

1) Referrer 검증

  • Request Header에 있는 요청을 한 페이지의 정보가 담긴 Referrer 속성을 검증하여 차단하는 방법입니다.
  • 같은 도메인 상에서 요청이 들어오지 않는다면 차단하도록 하는 것입니다.
  • 일반적으로 이 방법만으로도 대부분 방어가 가능합니다.

2) Security Token(CSRF Token)

  • 랜덤한 수를 사용자의 세션에 저장하여 사용자의 모든 요청(Request)에 대하여 서버 쪽에서 검증하는 방법입니다.
  • 요청을 받을 때마다 백엔드에서 세션에 저장된 토큰값과 요청 파라미터에서 전달되는 토큰값이 같은지 검증하는 방법입니다.

3) Double Submit Cookie

  • Security Token 검증의 한 종류로 세션을 사용할 수 없는 환경에서 사용할 수 있는 방법입니다. 웹브라우저의 Same Origin 정책으로 인해 자바스크립트에서 타 도메인의 쿠키 값을 확인/수정하지 못한다는 것을 이용한 방어 기법입니다.
  • 스크립트 단에서 요청 시 난수 값을 생성하여 쿠키에 저장하고 동일한 난수 값을 요청 파라미터(혹은 헤더)에도 저장하여 서버로 전송합니다. 서버단에서 쿠키의 토큰값과 파라미터의 토큰값이 일치하는지만 검사하면 됩니다.
  • 서버에 따로 토큰 값을 저장할 필요가 없어 세션을 이용한 검증보다 개발 공수가 적은 편입니다.
  • 피싱 사이트에서는 도메인이 달라 쿠키에 값을 저장하지 못하므로(Same Origin 정책) 가능한 방어 기법입니다.

References

profile
Alex's Develog 🤔

0개의 댓글