Чтобы сделать это безопасным без использования SSL, хэшируйте пароли на клиенте, используя SHA-2 .Хотя это защитит сам пароль, оно не защитит кого-либо от перехвата пароля hash .Таким образом, вы не можете просто пройти аутентификацию с помощью хешированного пароля.
Один из способов сделать это - использовать генерируемую сервером случайную соль при аутентификации.Для аутентификации клиент запрашивает соль с сервера, затем один раз хэширует пароль (чтобы соответствовать хешированной версии, хранящейся на сервере), затем снова хэширует с использованием той соли, которую он получил от сервера, а затем, наконец, аутентифицируется с использованием второго ajax.запрос с соленым хешированным паролем.
Сервер будет аутентифицироваться только в том случае, если он соответствует его собственному сохраненному хешированному паролю, хешированному с той же солью, которую он ранее предоставил клиенту.
Таким образом, этоневозможно, чтобы кто-то прошел аутентификацию, используя простую хешированную версию пароля.Поскольку каждая соль, предоставленная сервером, действительна только один раз, для кого-то было бы практически невозможно ее перехватить и аутентифицировать.(Они должны были бы перехватить солт-запрос, а затем попытаться пройти аутентификацию, прежде чем законный клиент мог это сделать, при этом подделывая свой сеанс).
Это защищает пароли пользователей без использования SSL, предотвращает вход в систему с использованием перехваченных данных во время аутентификации законного пользователя и довольно прост в реализации.Конечно, SSL не может заменить защиту реальных данных на вашем сайте, но для многих типичных веб-сайтов, на которых нет никакой конфиденциальной информации, вам следует больше заботиться о предотвращении кражи паролей ваших пользователей, поскольку людитак часто используйте один и тот же пароль.Это решает эту проблему.
Обратите внимание, что это также не делает ничего, чтобы предотвратить перехват сеанса, но вы можете минимизировать риск и ущерб от этого, выполняя такие вещи, как включение информации о браузере в сеанс пользователя и позволяя толькоодин активный сеанс за раз, требующий повторной аутентификации для изменения адреса электронной почты или пароля.