Мой оригинальный вопрос был о том, как включить HTTPS для страницы входа в Django , и единственный ответ, рекомендованный, чтобы я - сделал весь сайт только HTTPS .
Учитывая, что я использую Django 1.3 и nginx, как правильно сделать сайт только для HTTPS?
В одном ответе упоминалось решение промежуточного программного обеспечения , но была оговорка:
Django не может выполнить перенаправление SSL при сохранении данных POST.
Пожалуйста, структурируйте свои представления так, чтобы перенаправления происходили только во время GET.
В вопросе об ошибке сервера о перезаписи nginx в https также упоминались проблемы с потерей данных POST, и я недостаточно знаком с nginx, чтобы определить, насколько хорошо работает решение.
И EFF рекомендует использовать только HTTPS , отмечает, что:
Приложение должно установить атрибут Secure в cookie, когда
устанавливая это. Этот атрибут инструктирует браузер отправлять куки
только по защищенному (HTTPS) транспорту, никогда не является небезопасным (HTTP).
Имеют ли приложения, такие как Django-auth, возможность устанавливать cookie-файлы как безопасные? Или я должен написать больше промежуточного программного обеспечения?
Итак, каков наилучший способ настроить комбинацию Django / nginx для реализации только HTTPS, с точки зрения:
- безопасность
- сохранение данных POST
- куки-файлы обрабатываются правильно
- взаимодействие с другими приложениями Django (например, Django-auth), работает нормально
- любые другие проблемы, о которых я не знаю:)
Редактировать - еще одна проблема, которую я только что обнаружил при тестировании нескольких браузеров. Скажем, у меня есть URL https://mysite.com/search/
, который имеет форму / кнопку поиска. Я нажимаю кнопку, обрабатываю форму в Django как обычно и выполняю Django HttpResponseRedirect до http://mysite.com/search?results="foo"
. Nginx перенаправляет это на https://mysite.com/search?results="foo"
, по желанию.
Однако - Opera имеет видимую вспышку , когда происходит перенаправление. И это происходит при каждом поиске, даже по одному и тому же поисковому запросу (я думаю, что https действительно не кэшируется :) Хуже того, когда я тестирую его в IE, я сначала получаю сообщение:
Вы собираетесь перенаправиться на небезопасное соединение - продолжить?
После нажатия «да» сразу же следует:
Вы собираетесь просматривать страницы через безопасное соединение - продолжить?
Хотя второе предупреждение IE имеет возможность отключить его - предупреждение first нет, поэтому каждый раз, когда кто-то выполняет поиск и перенаправляется на страницу результатов, он получает по крайней мере одно предупреждение .