Как избежать SSL "Вы собираетесь быть перенаправлены на небезопасное соединение". сообщение
У меня есть экран входа, который я обслуживаю по протоколу SSL. Пользователь вводит свой логин / пароль, он отправляется на сервер. На данный момент я хочу выпрыгнуть из SSL, поэтому я перенаправляю их обратно на ту же страницу без SSL.
Это приводит к тому, что в браузере появляется диалоговое окно с предупреждением "Вы будете перенаправлены на небезопасное соединение". Как я могу избежать этого? У меня было много сайтов, таких как Yahoo Mail и Gmail, которые дают вам страницу SSL для входа в систему, а затем отправляют вас на страницу без SSL.
Вторичный вопрос: какова цель этого диалога? Он пытается предупредить меня о какой-то гнусной цели - но что плохого в том, чтобы перенаправить кого-то на страницу без SSL? Я не получаю предупреждение, когда я нахожусь на странице SSL и нажимаю ссылку не-SSL. Чем отличается перенаправление кого-то?
Я делаю это в ASP.NET 2.0 - но я думаю, что это общий вопрос веб-разработчика.
ОБНОВЛЕНИЕ РЕЗЮМЕ: Кажется, популярный ответ "НЕ ИЗБЕГАЙТЕ ЭТОГО". Я могу понять, что пользователь должен получить сообщение, когда его безопасность удаляется. Но у меня не появляется диалоговое окно, когда я перехожу по ссылке, и безопасность удаляется, поэтому, по крайней мере, я бы сказал, что это противоречиво.
Диалог / версия браузера. Я на самом деле не вижу диалоговое окно в IE7/FF3 (возможно, я установил флажок, чтобы предотвратить его). Что еще более важно клиент видит это в IE6 - без флажка, чтобы удалить его (да, я знаю, что IE6 старый и дерьмовый).
Firefox2: http://img521.imageshack.us/img521/8455/sslwarning.jpg
IE6: http://img188.imageshack.us/img188/139/sslwarningie6.jpg
Альтернатива: сделать весь сайт SSL, никогда не перенаправлять пользователя из SSL. Я мог бы справиться с этим. Но у меня есть полутехнический клиент, у которого есть несколько неплохих моментов:
- "SSL вызовет увеличение трафика / вычислительной мощности". Я на самом деле не покупаю это, и я не думаю, что его сайту нужно больше, чем одна коробка, чтобы его обслуживать.
- "Yahoo делает это. Yahoo - крупная техническая компания. Вы умнее, чем Yahoo?"
Я собираюсь попытаться перевести клиента на полностью SSL-сайт. Я буду утверждать, что подход Yahoo имел смысл в 1996 году, или для сайта, который НАМНОГО более популярен. Некоторые официальные ссылки, объясняющие, почему этот диалог происходит, помогут (например, уровень подлинности Якоба Нильсена).
8 ответов
Я столкнулся с этой же проблемой некоторое время назад. Итак, я заглянул внутрь Fiddler, чтобы увидеть, как Yahoo Mail это делает. Вот шаг, который я увидел (и использовал на моем сайте):
Пользователь заполняет зашифрованную форму SSL и отправляет на сервер. Сервер аутентифицируется и выплевывает какой-то скрипт для перенаправления клиента
<script language="JavaScript">
<!--
window.location.replace("~~ non-SSL URL ~~");
// -->
</script>
Я полагаю, что на стороне клиента есть код, чтобы избежать этого диалога.
"Как я могу избежать этого?"
Вы не должны!
Хотя вы можете попробовать это с помощью JavaScript. Это может работать в некоторых браузерах и не работать в других.
"Какова цель этого диалога?"
Это предупреждает, потому что переключение между SSL и не-SSL на веб-сайтах обычно неожиданно для пользователя. Предупреждение о "не SSL-SSL" не выводится, поскольку это повышает безопасность и конфиденциальность. Однако, когда безопасность внезапно снижается, пользователь должен заметить это быстро, чтобы избежать ложного ощущения безопасности. Фактически, перенаправление на сайт без SSL иногда используется в атаках XSS/MITM.
"SSL вызовет увеличение трафика / вычислительной мощности"
Это нонсенс. Это может быть верно для сайтов, наполненных большим статическим контентом. Однако для обычных динамических веб-приложений шифрование очень дешево по сравнению с бизнес-логикой, доступом к базе данных и т. Д.
Существует городская легенда, гласящая, что SSL-контент не отслеживается браузерами. См. " Будет ли веб-браузер кэшировать контент через https" для получения дополнительной информации.
"Yahoo делает это. Yahoo - крупная техническая компания. Вы умнее, чем Yahoo?"
Некоторые встречные вопросы риторики:
- Вы большая техническая компания, как Yahoo?
- Разве крупная техническая компания мешала Microsoft выпускать дрянное программное обеспечение?
- Нужно ли вам поддерживать дрянные старые (с нарушением SSL) браузеры, как это делает Yahoo?
Используйте SSL для всей страницы в первую очередь!
Там нет ничего плохого с SSL. Вы должны обеспечить конфиденциальность пользователя везде, а не только при входе в систему. Это имеет смысл весь сайт. Так что просто перенаправьте все страницы без SSL на страницы SSL и сохраните все SSL.
Что касается цели: это чтобы вы знали, что ваше соединение больше не будет шифроваться SSL. Возможно, вы уже видели, что соединение зашифровано, и можете подумать, что оно по-прежнему существует, поэтому в этом предупреждении говорится: "Просто чтобы быть ясно, все данные, которые вы отправляете, будут в незашифрованном виде".
Что касается того, как это подавить: AFAIK вы не можете, это вещь браузера, что было бы смысл сообщения иначе? Несмотря на то, что существуют обходные пути, такие как перенаправления на стороне клиента, я не думаю, что вам следует пытаться обходить клиентские "проблемы", подобные этой. Если браузер выбирает быть многословным, пусть это. В конце концов, в диалоговом окне есть флажок "Больше не показывать". Если пользователь хочет отключить это сообщение, он может легко это сделать, и, возможно, ему действительно нравится его видеть.
Кроме того, ИМХО, если бы браузер того стоил, он бы все равно выдал это предупреждение, даже если вы использовали приемы перенаправления на стороне клиента.
Просто укажите вашему клиенту последние атаки на контент в смешанном режиме (поиск CookieMonster на fscked.org) и прокси-атаки (на сайты, доступные как на http, так и на https, поиск Pretty-Bad-Proxy). Он может пересмотреть.
Намного легче получить правильную защиту, если вы работаете только с одним протоколом, не смешивая два. SSL добавляет немного накладных расходов, но это ничто по сравнению со стоимостью взлома.
Атака, против которой это предотвращается, является полосой сеанса SSL "человек посередине". Сообщение там с уважительной причиной.
Прочитайте: http://support.microsoft.com/kb/883740 где говорится, что это исправлено в исправлении или с измененным параметром реестра. Однако, не все процессоры IE6, которые мы используем, имеют эту проблему, и их настройки реестра не соответствуют тому, о чем говорится в этой статье. Также некоторые, которые дают сообщение, являются XPsp3 и IE6 sp3.
У нас есть экран входа в https, который использует код для входа в 15 других (http) доменов, и некоторые из наших пользователей IE6 должны нажать "Да" 15 раз. Это для них неприемлемо. Нет, мы не можем контролировать, какой браузер используют все наши пользователи. Некоторые не совместимы с обновлением до IE7.
Мы ищем некоторый атрибут конфигурации для каждого пользователя, который можно настроить, чтобы подавить это сообщение. Мы идентично настроили "плохой" браузер с настройками, которые соответствуют тому, который не дает сообщение. Интернет и Интранет Безопасность и Расширенные настройки и Прокси (нет). Также Сетевые подключения. Пока радости нет.
Есть идеи?
Gmail, Yahoo и т. Д. Используют SSL для зашифрованного iframe, который аутентифицируется, но перенаправление на странице, о котором вы говорите, отсутствует. Вся страница не зашифрована для этих систем входа.