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