Проблема с crsf в Джанго - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь выучить django, и я должен реализовать токен csrf для некоторых чувствительных действий. Но когда я перехватываю запрос / ответ, я получаю csrf_token в каждом запросе в поле cookie и на веб-страницах, где я фактически реализовал csrf_token, в этом запросе я получаю другой токен csrf в качестве параметра csrfMiddleware в данных. Поэтому я хочу знать, почему я получаю два csrf_tokens в своем запросе и ответе.

POST /demo/login/ HTTP/1.1
Host: xx.xx.xx.xx:8000
User-Agent: xxxxxx
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://xx.xx.xx.xx:8000/demo/login/
Content-Type: application/x-www-form-urlencoded
Content-Length: 125
Connection: close
Cookie: csrftoken=n4bSbWP8p9Uce3b5iAxI0UvDG0qQq7B3OwBXisww754LYztEm0wFf9ARLpVM2v7W
Upgrade-Insecure-Requests: 1

csrfmiddlewaretoken=VIqUszlij0OLyTgYEp7V2TRsNUtBqkISmaQZz52G1WYkipyxIP6Sh8WGSjYx2IeL&username=qwerty6&password=password%40123

1 Ответ

0 голосов
/ 14 января 2019

Согласно документации Django :

Для значения, хранящегося в куки:

Для защиты от атак BREACH токен не просто секрет; случайная соль добавляется к секрету и используется для его шифрования.

Для csrfmiddlewaretoken:

Скрытое поле формы с именем csrfmiddlewaretoken присутствует во всех исходящих формах POST. Значение этого поля, опять же, значение секрета, с солью, которая добавляется к нему и используется для его шифрования. Соль регенерируется при каждом вызове get_token(), поэтому значение поля формы изменяется в каждом таком ответе.

Следовательно, значения различаются из-за того, что они скремблированы по-другому.

...