Единственный правильный способ сделать это - ssl, поскольку он зашифрован в протоколе. Вы можете получить бесплатные сертификаты от https://letsencrypt.org/, и процедура установки довольно проста.
Один из обходных путей WEAK - хеширование пароля со случайной солью, которую вы держите в сеансе, для проверки входа на сервер:
- (сервер) начать сеанс, генерировать случайную строку (например, $ _SESSION ['salt'] = 'fffgjgjruydhns');
- (сервер) передает строку в браузер, внутри html;
- (браузер), когда пользователь отправляет форму, хэширует пароль со случайной строкой, что-то вроде sha256 (пароль + randomString)
- (браузер) отправляет хешированную строку на сервер
- (сервер) проверяет, совпадает ли пароль, сохраненный на сервере с солью из сеанса, со значением, полученным от клиента: sha256 (vedPassword + $ _SESSION ['salt']) == $ _POST ['hashedPassword «].
Некоторые важные замечания по поводу алгоритма выше:
- вы должны написать реальный код, в javascript нет функции sha256, возможно, вам следует использовать внешнюю библиотеку
- алгоритм предполагает, что вы храните пароль пользователя на сервере (и это не рекомендуется, поскольку вы должны хранить его хешированное значение);
Другой способ сделать это - реализовать систему public-private на уровне приложения (сервер генерирует public-private ключ, отправляет открытый ключ в браузер, браузер шифрует пароль, отправляет его на сервер, сервер расшифровывает его с помощью закрытого ключа). Но эту систему будет сложнее реализовать, чем просто получить сертификат.
Итак, во-первых, попытайтесь установить нормальную SSL-среду, это поможет вам в долгосрочной перспективе.