[django] Forbidden (CSRF cookie not set.) 오류 해결하기

rang-dev·2020년 6월 10일
4

간단한 sign up app(post로 가입, get으로 리스트 확인)을 만들었는데 post시 다음과 같은 오류가 발생했다.

[오류] Forbidden (CSRF cookie not set.): /login/
[10/Jun/2020 16:19:22] "POST /login/ HTTP/1.1" 403 2864

status code 403은 유저가 해당 요청에 대한 권한이 없다는 뜻이다. 즉 뭔가 권한을 인증할만한 토큰 같은게 필요하다는 뜻..!

이러한 오류가 뱔생한 이유는 django의 초기 설정에 CSRF validation이 기본적으로 설정되어있기 때문이다.

CSRF(Cross-site request forgery)

CSRF는 사이트간 요정 위조를 말한다. 사이트 간 요청 위조는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격을 말한다. 유명 경매 사이트인 옥션에서 발생한 개인정보 유출 사건에서 사용된 공격 방식 중 하나다.

하지만 CSRF가 굳이 필요없다면 해제해주면 된다. 나는 post 메소드가 담긴 MainView class에서만 해제해주고 싶었기 때문에 해당 class에 다음과같이 decorator를 적용해주었다.

django의 CSRF validation을 해제하기위한 더 다양한 방법은 여기를 참조하자!

+) 업데이트

그냥 간단히 프로젝트 폴더의 settings.py에 가서 MIDDLEWARE 부분에서 csrf부분을 주석처리 해주면 된다.

profile
지금 있는 곳에서, 내가 가진 것으로, 할 수 있는 일을 하기 🐢

0개의 댓글