Если вы спросите меня, я не буду использовать логины без шифрования SSL. Как только сеансы задействованы, я переключаюсь на SSL, поскольку кража сеансов без SSL слишком проста. Также SSL позволяет мне защищать свои страницы с помощью Basic-Auth, поэтому мне даже не нужен сеанс.
Так что, возможно, лучше всего рассмотреть возможность перехода вашего блога на SSL полностью. Обратите внимание, что для использования SSL на вашем сервере вам просто необходим сертификат SSL. Существует компания, которая предлагает free ssl certificate
за 0 $ в год. Также обратите внимание, что Google и все основные поисковые системы могут обрабатывать https
страницы без проблем.
Я пропускаю 1000 строк ответа о том, как реализовать собственную схему защищенных паролей с использованием JavaScript и AJAX по небезопасным линиям, поскольку это трудно реализовать.
Мне приходят на ум два варианта безопасного входа в систему без JavaScript и без SSL :
Существует дешевое устройство one time password USB
. Вы просто подключаете его к USB-порту, нажимаете кнопку, он создает OTP и все готово. Поскольку это OTP, он действителен только один раз, поэтому нет повтора и нет проблем при его прослушивании.
Другая вещь - OpenID
, которая используется здесь в стеке потока. OpenID не требует SSL между сервером и клиентом. Обратите внимание, что этот USB-токен, указанный выше, также уже поддерживает OpenID.
В обоих случаях предлагается множество бесплатных библиотек для реализации этого с использованием PHP или других языков. Это, безусловно, проще реализовать, чем создать правильно разработанную и безопасную схему паролей самостоятельно по небезопасным линиям.
Одна большая оговорка, однако:
Если вы используете сеансы по небезопасным линиям и входы в систему обычно используют сеансы, убедитесь, что сеанс защищен хотя бы по IP-адресу. Это должно быть реализовано на стороне сервера. Таким образом, если кто-то украл файл cookie сеанса, сеанс не может (ab) использоваться при условии, что вор не использует тот же wLAN (или компьютер), что и вы.