Прерывистые 403 с из-за отказа CSRF (Django 1.2.3) - PullRequest
5 голосов
/ 26 октября 2010

У меня слегка сумасшедшая / бешеная ошибка с сайтом и CSRF.

Мы работаем с Django 1.2.3, Python 2.6 в Ubuntu с Apache2 + mod_wsgi и получаем от конечных пользователей, которые сообщают о 403 ошибках проверки CRSF и 403-х в результате.

Все наши формы имеютcsrf_token и - насколько я знаю - все работает нормально в локальной разработке и на сцене (мы еще не работаем) ... за исключением одного офиса (клиента, естественно).В некоторых случаях они получают такой 403, но затем обновляются, и он уходит (так что это не HTML-код без токена и т. Д.)

Я обдумываю причины и решения, и это может бытьчто этот офис имеет излишне перегруженный или плохо настроенный прокси-кеш или тому подобное, и был бы признателен за несколько советов о том, что мы можем сделать, в Django / Apache способе работать с чрезмерно высокими прокси-серверами (офис клиентаскорее всего, не изменит свою настройку) или что еще может привести к сбою CSRF.

Кстати: это был проект 1.2.3 с нуля, а не какое-то обновление 1.1, и мы используем толькоодин стандартный / правильный 1.2.3 CSRFMiddleware и добавленный вручную csrf_tokens - не CSRFResponseMiddleware для автоматического включения csrf_token

Также: это произошло на двух отдельных серверах (сервер разработки и промежуточный сервер), которые размещены в разных местах,Общими факторами являются (теоретически) те же настройки Django / Apache / mod_wsgi, та же база кода и тот же офис, которые получают 403-е (и не могут реплицировать 403-е в нашем собственном местоположении).

1 Ответ

2 голосов
/ 09 ноября 2010

просто обновление на случай, если оно кому-нибудь поможет.

Мы сбросили защиту CRSF для тестирования (с помощью http://johnmc.co/llum/disable-csrf-protection-for-django-1-2/). Это очистило 403 с, но затем у нас были периодические 500 с для данных POST нулевой длины из того же клиента / локальной сети, что объясняло, что CSRF Сбой произошел из-за того, что токен присутствовал в сеансе, а не в полезной нагрузке (а не наоборот).

Итак, это не проблема CSRF, а проблема POST-payload-get-zapped -where. (Скорее всего, из-за неправильно настроенного прокси в одном месте)

НТН

Steve

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...