이론공부/네트워크통신

CSRF란 무엇인가? 방어기법?

멍토 2020. 7. 31.

Django를 이용하여 웹사이트를 만들때 POST로 요청을 보내면 CSRF 토큰이 존재하지 않는다며 에러가 났던적이 있다.

CSRF 토큰을 form 사이에

{% csrf_token %}

와 같이 추가만 해도 해결되는 문제였는데 이것이 무엇인지 궁금하여 포스팅하게 되었다.

 

 

CSRF(Cross Site Request Frogery)란 사용자가 자신의 의지와 상관없이 공격자(해커)가 의도한 대로 수정,등록,삭제 등의 행위를 웹사이트에 요청하게 하는 공격이다.

이러한 공격을 막기위한 방법이 있다.

 

1. Referrer 검증

Referrer 검증은 Backend에서 request의 referrer를 확인하여 도메인이 일치하는지 검증하는 방법이다.

일반적으로 referrer 검증만으로 대부분의 CSRF공격을 방어할 수 있다.

 

2. Security Token 사용 (A.K.A CSRF Token)

사용자의 세션에 임의의 난수값을 저장하고 사용자의 요청마다 해당 난수값을 포함시켜 전송시킨다.

Backend에서 요청을 받을때마다 세션에 저장된 토큰값과 요청 파라미터에 전달되는 토큰값이 일치하는지 검증하는 방법이다.

이미지 출처 : https://itstory.tk/entry/CSRF-%EA%B3%B5%EA%B2%A9%EC%9D%B4%EB%9E%80-%EA%B7%B8%EB%A6%AC%EA%B3%A0-CSRF-%EB%B0%A9%EC%96%B4-%EB%B0%A9%EB%B2%95

참조 : https://namu.wiki/w/CSRF

 

CSRF - 나무위키

[오류!] CSRF 방지 토큰이 일치하지 않습니다. 다시 시도해주세요. 저장을 클릭하면 나타나는 나무위키 편집 오류 최초 형태는 XSS 방지 토큰이 일치하지 않습니다.였다. 왜 발생하는 지에 대해서��

namu.wiki

https://itstory.tk/entry/CSRF-%EA%B3%B5%EA%B2%A9%EC%9D%B4%EB%9E%80-%EA%B7%B8%EB%A6%AC%EA%B3%A0-CSRF-%EB%B0%A9%EC%96%B4-%EB%B0%A9%EB%B2%95

 

CSRF 공격이란? 그리고 CSRF 방어 방법

CSRF 공격(Cross Site Request Forgery)은 웹 어플리케이션 취약점 중 하나로 인터넷 사용자(희생자)가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게

itstory.tk

 

'이론공부 > 네트워크통신' 카테고리의 다른 글

TCP 3-way handwake란 무엇인가?  (0) 2020.08.06
쿠키/세션이란 무엇인가?  (1) 2020.08.03
CORS란 무엇인가?  (0) 2020.08.02
GET, POST방식의 이해  (0) 2020.04.25
HTTP 상태코드  (0) 2020.04.20

댓글

💲 광고입니다.