본문 바로가기
Project/preprint-cloud-service

[preprint-cloud-service] csrf 오류 (forbidden)

by 지식을 쌓는 개구리 2023. 11. 30.

 

preprint-cloud서비스를 잘 배포하고 잘 운영하다가

신기하게 https를 적용하고 나서부터 회원가입진행할 때 아래와 같은 오류가 났다.

 

서비스가 HTTPS를 통해 접속되었을 때와 HTTP를 통해 접속되었을 때를 구분하지 못했기 때문에 위와 같은 오류가 뜨는 것인데..

csrf 공격을 설명하자면 사용자가 의도하지 않은 요청을 서버에 전송하게 만드는 공격이다.

예를 들어, 사용자가 로그인한 상태에서 악의적인 링크를 클릭하면, 그 링크가 사용자의 인증을 이용해 서버에 해로운 요청을 보낼 수 있는데

Django 같은 웹 프레임워크에서는 이를 방지하기 위해 CSRF 토큰을 사용한다. 사용자가 폼을 제출할 때 이 토큰이 함께 전송되어야 하며서버는 이 토큰을 검증하여 요청이 유효한지 확인한다.

 

해결방법은 간단하다.

 

장고 settigns.py 에 allow리스트에 추가해줬던 방식 그대로 

CSRF_TRUSTED_ORIGINS리스트를 만들고 허용할 도메인, ip 주소를 입력해주면 된다!

 

=> 문제 해결!

 

sudo systemctl restart gunicorn

sudo systemctl restart nginx

=> 엔진엑스를 재시작하니 오류가 사라진 것을 확인할 수 있다.