Мой первоначальный вопрос заключался в том, как включить HTTPS для страницы входа в Django , и единственный ответ, рекомендуемый мне - сделать весь сайт доступным только для HTTPS .
Учитывая, что я использую Django 1.3 и nginx, как правильно сделать сайт доступным только для HTTPS?
В одном из ответов упоминалось промежуточное программное обеспечение , но с оговоркой:
Django не может выполнить перенаправление SSL при сохранении данных POST. Пожалуйста, структурируйте свои представления так, чтобы перенаправлялись происходят только во время GET.
Вопрос о сбое сервера о перезаписи nginx на https , также упоминались проблемы с потерей данных POST, и я недостаточно знаком с nginx, чтобы определить, насколько хорошо работает решение.
И рекомендация EFF перейти только на HTTPS , отмечает, что:
Приложение должно установить атрибут Secure для файла cookie, когда устанавливает его. Этот атрибут указывает браузеру отправлять cookie только по безопасному (HTTPS) транспорту, а не по незащищенному (HTTP).
Есть ли в таких приложениях, как Django-auth, возможность устанавливать файлы cookie как безопасные? Или мне нужно написать больше промежуточного программного обеспечения?
Итак, как лучше всего настроить комбинацию Django / nginx для реализации только HTTPS с точки зрения:
Изменить - еще одна проблема, которую я только что обнаружил, при тестировании нескольких браузеров. Скажем, у меня есть 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 имеет возможность выключите его - первое предупреждение не отображается, поэтому каждый раз, когда кто-то выполняет поиск и перенаправляется на страницу результатов, он получает по крайней мере одно предупреждающее сообщение.