Нужен ли тег защиты CSRF {% csrf_token%} в Django 1.2? - PullRequest
5 голосов
/ 01 декабря 2010

Я тестирую защиту CSRF на своем сайте и заметил нечто неожиданное.

Я удалил {% csrf_token %} из своей формы, и отправка по-прежнему работает.Я не мог понять почему.Затем я посмотрел на источник и понял, что токен все еще там, рядом с элементом <form>.Я изменил идентификатор формы, чтобы убедиться, что он определенно обновлял источник, и это было, но скрытый ввод все еще там.

Я использую Django 1.2.{% csrf_token %} все еще необходимо?

Приветствия

Богатые

Ответы [ 2 ]

4 голосов
/ 01 декабря 2010

После дополнительного исследования кажется, что {% csrf_token %} всегда вставляется, если в форме есть метод post, а не если нет. Очень умная автоматическая защита от Django.

2 голосов
/ 01 декабря 2010

Из документации:

В Django 1.1 тег шаблона не существовал. Вместо этого использовалось промежуточное программное обеспечение для пост-обработки, которое переписывало формы POST для включения токена CSRF. Если вы обновляете сайт с версии 1.1 или более ранней, ознакомьтесь с этим разделом и примечаниями по обновлению ниже.

http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#legacy-method

...