Я начинаю писать небольшое веб-приложение и начал думать о защите входа в систему (используется только для администрирования).
Если бы я мог, я бы установил сертификат CACert или самозаверяющий SSL, поскольку пока я буду единственным, кто будет входить в систему, но мой хост не слишком любезен.
Существуют ли разумные варианты защиты сайта без SSL? Я думал о вариантах аутентификации:
Реализация соленого хэша в JavaScript. Когда страница входа будет загружена, создайте солевой сервер. Отправьте его клиенту в открытом виде и сохраните в переменной сеанса.
Дайджест-аутентификация. Я только что нашел эту идею, просматривая SO, и это, вероятно, намного более разумно, чем использование моей собственной аутентификации.
OpenID. Это открытый стандарт, пароли не требуются (и я могу «взломать» SSL моего провайдера OpenID, чтобы повысить безопасность процесса входа в систему), но я понятия не имею, как работает OpenID или насколько он безопасен. (Требуется исследование. Например, можно ли воспроизвести аутентификацию OpenID?)
Проблема со всем этим в том, что:
- Сессии могут быть угнаны
- Безопасен только логин, все остальное в открытом виде
Единственный вариант, который я могу придумать для защиты приложения после входа в систему, - это несколько отвратительные JavaScript и PHP, отправляющие зашифрованные двоичные объекты ASCII туда и обратно. Я не хочу этого делать.
Существует ли какое-либо шифрование (для загрузки страниц и POST), которое может быть реализовано на выбранном мной языке сценариев на стороне сервера без благословения или участия моего хоста, но которое будет поддерживаться браузером? Можно ли защитить сеансы от перехвата (практически) без SSL?
Что бы вы сделали в такой ситуации?