Rookies/애플리케이션 보안
[SK shieldus Rookies 19기] Django pybo - 크로스 사이트 요청 위조 (CSRF)
bento
2024. 3. 30. 04:32
[SK쉴더스 Rookies 19기] 클라우드 기반 스마트 융합보안 과정
01. pybo - CSRF
config\settings.py
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
django.middleware.csrf.CsrfViewMiddleware 활성화
question_form.html
{% extends 'base.html' %}
{% block content %}
<div class="container">
<h5 class="my-3 border-bottom pb-2">질문 등록</h5>
<form method="post" class="post-form my-3">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="btn btn-primary">저장하기</button>
</form>
</div>
{% endblock %}
장고의 경우 프레임워크에서 CSRF 토큰을 활용함
템플릿에 {% csrf_token %} 넣기
- 전역적으로 비활성화
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
- 부분적으로 비활성화
뷰 함수에 @csrf_exempt 데코레이터를 추가
→ csrf토큰이 없거나 변조되어도 질문 등록이 가능해짐
728x90