yarkov
@yarkov
Проект "Жизнь после смерти" - lifeafterdeath.ru

Как безопасно передать пароль?

Пишу для самообразования чат на Node.js. Для хеширования паролей пользователей, как на сервере, так и на клиенте, использую https://www.npmjs.com/package/crypto-js

Алгоритм такой:
Пользователь вводит логин и пароль и жмет войти
Шифруем пароль на клиенте например так:
<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"></script>
<script type="text/javascript">
    var password = $('#pass').val();
    var encrypted = CryptoJS.SHA512(password );
    // .. шлем пароль и логин на сервер
</script>

На сервере сравниваем с хэшем из БД
И т. д.

Это же неправильно? Или забить и слать по старинке, а на сервере хешировать и сравнивать?
  • Вопрос задан
  • 1962 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Вариант первый, самый правильный - регистрацию пользователя делать только по https.
Вариант второй - использовать асимметричное шифрование, для каждого сеанса на сервере генерировать пару ключей, передавать открытый ключ клиенту, на клиенте шифровать этим ключом данные, на сервере расшифровывать закрытым ключом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
VIKINGVyksa
@VIKINGVyksa
front-end developer
Так хэшировать вам нужно только на сервере, на клиенте зачем?
Вы просто на сервер отсылаите пароль "pass243" и на сервере его хэшируите своим алгоритмом и проверяите с тем захэшированным в БД. Совпадает то всё ок. На клиетне ничего не храните иначе взломают как нечего делать)
Ответ написан
Комментировать
Нет никакого смысла в хешировании пароля на клиенте.
Используйте протокол с шифрованием данных(https).
А на сервере уже считайте хеш (желательно с какой-то солью и сравнивайте/сохраняйте).
Ответ написан
Комментировать
Vurtatoo
@Vurtatoo
Lead Software developer
Нет никакого смысла в хешировании пароля на клиенте.
Нужно использовать протокол https, который обезопасит от атаки человека посередине.
На сервере храните хеш пароля, желательно с солью сравнивайте и сохраняйте.
Для злоумышленика хеш посчитанный на клиенте и будет нормальным паролем.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Можно реализовать что-нибудь типа MSCHAP2, завернутого в SSL с современным алгоритмом хэширования. При обмене сообщениями либо использовать тот же канал SSL, либо в процессе аутентификации вырабатывать ключи шифрования и все сообщения шифровать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы