Использование Https - правильный ответ.
Я добавлю разъяснение о важности вычисления хэша на стороне сервера.
Хеш - это односторонняя функция, преобразующая ввод в значение ключа, хранящееся на сервере. Если кто-то взломает сервер и получит хэшированный ввод (значение ключа), он не сможет вывести из него значение ввода, чтобы выдать себя за вас.
Если вы вычисляете значение ключа на стороне клиента и на сервере не выполняется одностороннее преобразование, это эквивалентно сохранению паролей в виде открытого текста. Кто-то, кому удалось получить копию значения ключа, хранящегося на сервере, может легко выдать себя за вас, просто отправив значение ключа.
Таким образом, для защиты базы данных паролей требуется применение на стороне сервера криптографически защищенной односторонней функции (например, e.sha256) со случайным / случайным начальным числом для переданного пароля.
Запутывание отправленного пароля путем его хеширования, в дополнение к хешированию на стороне сервера, не поможет Mutch, если переданное хэшированное значение всегда одинаково. Однако шпионские данные, отправленные через соединение SSL, не являются тривиальными.
Однако хэширование пароля на стороне клиента имеет существенное преимущество. Атака грубой силы на сервер с попыткой угадать пароль с использованием словаря общих паролей станет безнадежной, поскольку хеширование на стороне клиента рандомизирует пароль.
Мы можем добавить соль в хеш для защиты от использования словаря хешированных паролей. Когда пользователь введет свой идентификатор пользователя, запросите конкретное значение соли для сервера. Затем используйте возвращенное значение соли или начального числа для создания хешированного пароля на стороне клиента.
Грубое форсирование паролей может быть затруднено на стороне сервера из-за увеличения промежутка времени между попытками. Но это обычно работает для одного конкретного соединения. Атакующий может восстановить соединение после каждых двух попыток. Затем необходимо отслеживать IP-адреса для распознавания атак такого типа.