Я работаю над проектом, в котором удаленным клиентам необходимо войти на веб-сервер. Я не ищу примеров на каком-либо конкретном языке; просто общее представление о проблемах безопасности.
Основной вопрос:
Как передавать учетные данные пользователя на веб-сервер для проверки?
Я представляю ваш типичный логин на сайте. Одно поле для имени пользователя, а другое для пароля. Вы вводите оба и нажимаете «Войти». Что будет дальше?
Я могу представить несколько сценариев:
- Учетные данные отправляются на сервер в виде простого текста. Серверный скрипт создает хэш пароля и сравнивает его с сохраненным хешем для пользователя.
- Учетные данные шифруются локально, а результат отправляется на сервер. Сервер расшифровывает учетные данные и продолжает, как в # 1
- Что-то, о чем я еще не подумал? Я новичок в этом. Полегче на меня!
Вариант № 1 кажется мне слабым, поскольку учетные данные отправляются через Интернет в виде простого текста.
Я вижу вариант № 2 не намного лучше, чем вариант № 1. Если кто-то перехватывает зашифрованные учетные данные, могут ли они не просто отправить их на сервер в другой раз, но все же удается войти в систему?
Любое понимание приветствуется.
edit: боковая панель «Связанные» предлагает этот вопрос , в котором упоминается рукопожатие клиент / сервер с добавлением соли к паролю. Это правильный путь?