2015-11-21 4 views
1

Я нашел много сообщений о проверке части поддержки браузера SNI, но не сочетания с системным временем.Перенаправить определенных посетителей в https (браузер SNI и системное время в порядке)

По умолчанию для моего сайта является http. Теперь я настроил SSL. Но совместимость важна для меня. Безопасность наименее важна. Я только хочу, чтобы автоматически перенаправить пользователей на https, если я уверен, что они не будут видеть ошибку (а затем ложно думаю, что мой сайт сломан).

Поскольку целевая страница является HTTP, мы можем использовать php или .htacess для обнаружения. Я видел дискуссию в другом месте, используя переадресацию php, которая может вызвать проблему с кнопкой «Назад». (Force SSL and handle browsers without SNI support)

Помимо поддержки SNI, я также знаю, что если у пользователя есть ошибочно настроенное системное время, он может столкнуться с ошибкой на сайте https.

Итак, какой лучший подход для достижения как системного времени проверки SNI +? Любой другой возможный сценарий, когда пользователь перенаправляется на https, может столкнуться с ошибками?

================================================================================================================================================ =======================

Обновление:

Загрузка домашней страницы на самом деле не требуется "безопасность". Я думаю, могу ли я быстро проверить, может ли пользователь успешно загрузить объект, например. https://example.com/test.ico, если да, тогда выберите опцию «Безопасный вход». (Kudos to Steffen). После этого действие post будет выполнено в https для предотвращения несанкционированного доступа к учетным данным.

Если тест для https не удался, тогда нет выбора, который пользователь должен Войти без https.

  1. Будет ли это работать?
  2. Дополнительный тест, несомненно, будет перетащить на скорости загрузки сайта разве это

ответ

0

Это не ответ, который вы ищете, и собирался оставить в качестве комментария по этой причине, но надо долго, так решил ответить вместо этого:

Хотя замечательно пытаться обращаться со всеми своими пользователями независимо от того, какой устаревшей технической или плохой настройкой у них есть, в какой-то момент вы должны спросить себя о том, какие усилия вы вкладываете в вознаграждение за несколько дополнительных хитов?

Управление двойным http и https является административным кошмаром, который просто помещает ваших пользователей, поддерживающих https (подавляющее большинство практически на всех сайтах), при ненужном риске из-за атак с понижением рейтинга, невозможности сделать файлы cookie безопасными, случайно включая небезопасный контент. и т. д. С точки зрения SEO также у вас в основном есть два сайта, которые трудно управлять.

IMHO, если вы так сильно чувствуете себя в отношении пользователей SNI, тогда платите за выделенный IP-адрес, если не переходите только к HTTPS.

Совместимость - самое важное для меня. Безопасность наименее важна

Затем придерживайтесь протокола HTTP и даже не рассматривайте HTTPS.

Наконец, вы должны помнить, что браузеры заставят вас двигаться достаточно скоро.Например, принудительное получение сертификатов SHA-2 (которые не поддерживаются очень старыми браузерами, аналогичными SNI) означает, что вам в конечном итоге придется называть его днем ​​в старых браузерах. Поэтому любой ответ, который вы придумаете здесь, будет недолгим. И это предполагает, что вы можете придумать решение, которое будет работать во всех браузерах (не спрашивайте про себя!).

0

Невозможно обнаружить это на стороне сервера с помощью PHP или .htaccess, потому что, если соединение выходит из строя из-за отсутствия SNI или неправильного системного времени, то он не работает уже во время установления связи SSL. Но часть PHP или .htaccess используется только для части HTTP, т. Е. Только в том случае, если квитирование SSL завершено успешно.

Что вы можете попытаться сделать, это включить ресурс https в целевую страницу и посмотреть, успешно ли это загрузится. Это может быть сделано с изображением, css, XHR или аналогичным. Например, вы могли бы сделать это

<img src="https://test-ssl.example.com" 
    onload="redirect_to_https();" 
    onerror="notify_user_about_problem();" /> 

Если соединение SSL на ваш сайт был создан успешно обработчик OnLoad запускается на выполнение, и пользователь перенаправляется на сайт HTTPS. Если рукопожатие выходит из строя, пользователь получает уведомление об этой проблеме.

Обратите внимание, что вы не можете различать различные виды ошибок таким образом, то есть вы не знаете, вызвана ли проблема неправильным системным временем или отсутствием поддержки SNI. Если вы хотите сделать это, вам нужно будет включить ресурс non-SNI таким же образом и посмотреть, будет ли он успешно загружен.

Но совместимость важна для меня. Безопасность наименее важна.

Я считаю это плохим, но, к сожалению, очень распространенным подходом. Я бы рекомендовал вам вместо этого использовать этот механизм, чтобы пользователь не мог получить доступ ко всем функциям вашего сайта только с помощью http, но чувствительные части должны быть ограничены https. Но вы можете использовать этот подход, чтобы подробно информировать пользователя о проблеме и показывать альтернативы вместо того, чтобы просто вызвать некоторую странную ошибку соединения из-за неудачного SSL-подтверждения.