[파이썬][Django] CSRF 방어 함수 사용 방법과 예제

Django에서 CSRF(Cross-Site Request Forgery) 공격을 방어하기 위한 함수를 사용하는 방법과 예제를 제공하겠습니다. Django는 기본적으로 CSRF 공격을 방어하기 위한 내장 기능을 제공합니다.

  1. CSRF 미들웨어 활성화

    먼저, Django에서 CSRF 공격 방어를 활성화해야 합니다. 이 기능은 기본적으로 활성화되어 있습니다. settings.py 파일에서 MIDDLEWARE 설정을 확인하고 다음과 유사한 항목이 있는지 확인합니다.

MIDDLEWARE = [
        # ...
        'django.middleware.csrf.CsrfViewMiddleware',
        # ...
    ]
위의 항목이 `MIDDLEWARE` 설정에 포함되어 있는지 확인하십시오.
  1. 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>
  1. 뷰 함수에서 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 공격으로부터 보호할 수 있습니다.