쿠키, CSRF 및 Django (1.4 사용)에서 초보자이기 때문에 어떻게 작동하는지 알 수 있습니다.Django의 CSRF 보호는 어떻게 작동합니까?
다음 내용은 django.middleware에 적용됩니다. csrf.CsrfViewMiddleware는 MIDDLEWARE_CLASSES 튜플에 포함됩니다. 포스트 폼이 csrf_token
태그를 포함하고, 당해보기 페이지를 요청하는 템플릿 RequestContext
전달
장고 영숫자 문자열을 포함하는 숨겨진 폼 필드를 포함하는 것을 의미한다. Django는 또한 브라우저에 이름이 csrftoken
으로 설정되고 값이 동일한 영숫자 문자열로 설정된 쿠키를 반환합니다.
양식 제출을 받으면 장고는 숨겨진 양식 필드의 영숫자 문자열 값과 브라우저에서받은 csrftoken 쿠키가 일치하는지 확인합니다. 일치하지 않으면 403 응답이 발행됩니다.
CSRF 공격은 iframe이 포함 된 악성 웹 사이트의 형태로 나타날 수 있습니다. iframe에는 POST 양식과 일부 JavaScript가 포함되어 있습니다. 양식의 action
속성이 내 Django 사이트를 가리 킵니다. 이 양식은 내 사이트에서 불쾌한 행동을하도록 고안되었으며 JS는 iframe이로드 될 때 양식을 제출합니다.
브라우저에는 csrftoken
쿠키가 양식 제출 헤더에 포함됩니다. 그러나 양식에 일치하는 영숫자 문자열이 숨겨진 필드를 포함하지 않으므로 403이 반환되고 공격은 실패합니다. 올바른 hiddden 양식 필드를 만들기 위해 iframe JS가 쿠키에 액세스하려고 시도하면 브라우저가 쿠키를 액세스하지 못하게합니다.
이 정보가 맞습니까?
잘못된 것이 없습니다. 어쩌면 다른 사람들도 그렇게 하겠지만 일반적으로 당신은 그것을 얻습니다. – Zashas