[파이썬][Django] CSRF 방어 함수 사용 방법과 예제
Django에서 CSRF(Cross-Site Request Forgery) 공격을 방어하기 위한 함수를 사용하는 방법과 예제를 제공하겠습니다. Django는 기본적으로 CSRF 공격을 방어하기 위한 내장 기능을 제공합니다.
-
CSRF 미들웨어 활성화
먼저, Django에서 CSRF 공격 방어를 활성화해야 합니다. 이 기능은 기본적으로 활성화되어 있습니다.
settings.py
파일에서MIDDLEWARE
설정을 확인하고 다음과 유사한 항목이 있는지 확인합니다.
MIDDLEWARE = [
# ...
'django.middleware.csrf.CsrfViewMiddleware',
# ...
]
위의 항목이 `MIDDLEWARE` 설정에 포함되어 있는지 확인하십시오.
-
CSRF 토큰 사용 예제
Django에서 CSRF 토큰을 사용하여 폼을 보호하는 예제를 제공하겠습니다.
<pre>
<code>
<!-- myapp/templates/my_form_template.html -->
<form method="post" action="{% url 'form_submit' %}">
{% csrf_token %}
<!-- 폼 필드들 -->
<button type="submit">Submit</button>
</form>
위의 코드에서 `{% csrf_token %}` 태그는 CSRF 토큰을 폼에 포함시킵니다.
</code>
</pre>
-
뷰 함수에서 CSRF 검증 예제
CSRF 토큰은 자동으로 검증됩니다. 하지만 뷰 함수에서 추가적인 검증이 필요한 경우,
@csrf_protect
데코레이터를 사용할 수 있습니다. 예를 들어, 특정 뷰 함수에 CSRF 검증을 추가하려면 다음과 같이 작성할 수 있습니다.
# myapp/views.py
from django.views.decorators.csrf import csrf_protect
from django.shortcuts import render
@csrf_protect
def my_view(request):
# 뷰 함수 내용
return render(request, 'my_template.html')
이 데코레이터는 특정 뷰 함수에만 CSRF 검증을 적용합니다.
Django는 CSRF 방어를 기본적으로 활성화하며, CSRF 토큰을 사용하여 폼을 보호합니다. 추가적인 조치나 검증이 필요한 경우 csrf_protect
데코레이터를 사용할 수 있습니다. 이를 통해 Django 애플리케이션을 CSRF 공격으로부터 보호할 수 있습니다.