Подтвердить что ты не робот

Правильный способ отправки имени пользователя и пароля с клиента на сервер

Этот вопрос не зависит от языка. Мне интересно, как правильно отправлять имя пользователя и пароль из формы входа на веб-сайт на сервер.

Мое предположение заключается в хеш-пароле, поместите имя пользователя/пароль в тело POST и отправьте его по HTTPS. Какой лучший способ?

Для хорошей меры я упомянул менее идеальный метод:

http://www.somesite.com/login?un=myplaintextusername&pw=myplaintextpassword
4b9b3361

Ответ 1

Важными компонентами являются то, что вы передаете данные формы в тело POST (таким образом, он не кэшируется нигде и не сохраняется в каких-либо файлах журналов) и использует HTTPS (таким образом, если у вас есть хороший сертификат SSL/TLS, никто может вынюхивать пароль от наблюдения за сетевым трафиком). Если вы это сделаете, нет никакой дополнительной дополнительной выгоды при хэшировании пароля, по крайней мере, во время передачи.

Почему люди говорят о хэшировании паролей? Поскольку обычно вы не хотите хранить пароль пользователя в форме открытого текста в своей серверной базе данных (в противном случае влияние скомпрометированного сервера еще хуже, чем в противном случае). Вместо этого вы обычно храните соленую/хешированную форму и затем применяете ту же соль/хэш к паролю, полученному через данные формы, чтобы вы могли сравнить эти два.

Для получения дополнительной информации о соляторе см. http://en.wikipedia.org/wiki/Salt_ (криптография) (и ссылки там).

Ответ 2

Вы всегда должны использовать HTTPS и избегать кода на дому. SSL позаботится о хэшировании и шифровании. Это ТОЛЬКО безопасный метод.

Также убедитесь, что вы хешируете пароли на сервере и сохраняете хэш, а не оригинальный пароль. Затем сравните хэши, чтобы проверить логины. Это предотвратит проникновение злоумышленников прямолинейными паролями прямо из вашего db, если он скомпрометирован.

Ответ 3

Если вы используете HTTPS, вы можете отправить имя и пароль в орган POST, который будет защищен от подслушивающих устройств (при условии, что вы доверяете SSL). Вам не нужно хешировать пароль, если вы это сделаете, хеш пароля так же полезен, как и сам пароль, поэтому он ничего не покупает.

Более важный вопрос заключается в том, как вы храните пароль на стороне сервера. Хранение хэшированного пароля приемлемо только при использовании хорошего алгоритма, такого как scrypt. Но это еще не так хорошо, как расширенный протокол, например SRP.