В нашем приложении сейчас есть HTTP-перенаправление на HTTPS. Теперь мы хотим полностью удалить эту HTTP-привязку из соображений безопасности, и чтобы наши пользователи использовали только HTTPS, настроив «Требовать SSL» в IIS.
Проблема в том, что у нас все еще есть около 10% пользователей, которые используют эту страницу HTTP-перенаправления, поэтому мы не можем просто отключить HTTP-перенаправление. Многие пользователи могут в конечном итоге позвонить в службу поддержки.
Теперь идея состоит в том, чтобы в первом выпуске иметь ссылку страницы HTTP-перенаправления на новую страницу, которая содержит информацию о новой ссылке для использования. В следующем выпуске мы сможем полностью включить «Требовать SSL».
Это решение кажется нормальным, но было бы лучше иметь перенаправление HTTP на информационную страницу и одновременно требовать SSL. Это возможно?
Любые другие предложения по этому поводу также приветствуются. Спасибо.
«Требовать SSL» по-прежнему отвечает без SSL, поэтому атаки MITM все еще возможны.
Чтобы защитить сайт, вы должны использовать перенаправление, а затем отправить Заголовок Strict-Transport-Security, так что после первого посещения браузер пользователя не будет пытаться подключиться без использования SSL.
Если вы включите параметр «Требовать SSL», запросы HTTP не будут выполнены немедленно.
Перед тем, как сделать то же самое, мы использовали один трюк (с использованием ASP.NET): проверить протокол на странице по умолчанию, а затем выдать дружеское предупреждение, например
If Not Request.IsSecureConnection Then
loginform.visible = False
ltl_warning.Text = "Non-secure connections will be disabled in one month, please use the secure address only: https://mysite.com"
End If
Можно потребовать SSL и перенаправить, заменив страницу 403.htm следующей:
<html>
<head><title>Redirecting...</title></head>
<script language="JavaScript">
function redirectHttpToHttps()
{
var httpURL= window.location.hostname + window.location.pathname + window.location.search;
var httpsURL= "https://" + httpURL;
window.location = httpsURL;
}
redirectHttpToHttps();
</script>
<body>
</body>
</html>
Не уверен, что это решение учитывает проблемы безопасности, которые мы пытаемся исправить с помощью перенаправления.
У Bradlis7 есть здесь единственный фактически правильный ответ. Если вас беспокоит MITM, ничто из того, что вы делаете на своем веб-сайте, не решит проблему. Вы можете полностью отключить HTTP для своего сайта, если на стороне клиента действует агент посредника, он просто скажет: «Да, сайт HTTP определенно существует, следуйте за мной».
На самом деле вы приносите гораздо больше пользы своим пользователям, просто перенаправляя весь HTTP-трафик на HTTPS. Также, на мой взгляд, вы должны пересылать запросы для любого URL-адреса, отличного от HTTPS, на свою домашнюю страницу (желательно с примечанием), а не на динамическую версию запрошенного URL-адреса, поскольку запрошенный URL-адрес HTTP мог быть изменен сторонним MITM вы беспокоитесь о.