Django의 csrf 처리 사용
django.middleware.csrf.CsrfViewMiddleware
은 전역적인 csrf 검사를 제공합니다.그것의 원리는
탭에 숨겨진
탭을 생성하여 폼을 제출할 때 숨겨진
를 함께 제출하고 서버에서 이 필드가 정확한지 확인하는 것이다.공식적으로 제시된 csrf의 조작 절차는 다음과 같다.
MIDDLEWARE_CLASSES
에 django.middleware.csrf.CsrfViewMiddleware
를 추가하여 전역 csrf 보호를 시작합니다.
탭에 {% csrf_token %}
템플릿 탭을 추가합니다.django.template.context_processors.csrf
Context 프로세서를 사용해야 합니다.실현 방식은 두 가지가 있다. (1).RequestContext
를 사용하거나 일반 보기를 직접 사용하면 템플릿 상하문에 자동으로 csrf_token
를 추가합니다.return render_to_response("xxx.html", context_instance=RequestContext(request)) (2). CSRF token을 생성하기 위해 프로세서를 수동으로 가져와 템플릿 컨텍스트에 추가합니다.예: from django.shortcuts import render_to_response from django.template.context_processors import csrf def my_view(request): c = {} c.update(csrf(request)) # ... view code here return render_to_response("a_template.html", c) 그러나 수동으로 가져오는 것은 번거롭고 코드를 유지하기 어려워지며 사용
RequestContext
도 나아지지 않고 Django 1.8의 문서에 설명context_instance
1.8 이후 폐기된다.그럼 우리는 어떻게 처리해야 합니까csrf_token
?사실 Django는 이 문제를 처리할 수 있는 빠른 함수를 제공했다.django.shortcuts.render
내부 설정context_instance
에서 부족한 것은 RequestContext
의 실례이다.render
를 호출하면 자동으로 csrf_token
를 상하문에 추가할 수 있습니다.인터넷상에서 일부 블로그는
settings
에 설정TEMPLATE_CONTEXT_PROCESSORS
을 해서 전역적인csrf_token
을 상하문에 채울 수 있다고 말한다.하지만 실험을 해보니 잘 안 돼요. 그 이유를 아는 친구가 있다면 알려주세요.settings
에서는 다음과 같이 설정합니다.TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS + (
'django.core.context_processors.csrf',
)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.