Можно ли безопасно отправлять имя пользователя и пароль через HTTPS через параметры URL?

Вчера у коллеги и у меня начались жаркие дебаты, можно ли безопасно отправлять учетные данные через параметры URL в качестве средства аутентификации. Он правильно указал, что HTTPS шифрует все символы без имени/порта в URL-адресе перед отправкой запроса на серверную сторону.

Тем не менее, я все еще думаю, что здесь есть краевые случаи, где можно украсть эти учетные данные и полагать, что их следует отправлять через POST HTTPS. Действительно ли это безопасное средство отправки данных входа/токена?

Ответы

Ответ 1

Запрашиваемый URL-адрес может отображаться в журналах веб-сервера и истории браузера/закладках, что не очень хорошо.

Ответ 2

Сделайте дополнительный шаг, если у вас есть база данных. Отправьте имя пользователя и пароль через сообщение формы, верните свой токен (проводник), напишите токен в таблицу базы данных и назначьте время истечения срока действия, а затем используйте этот токен в querystring вместо учетных данных, Теперь ваша система будет очень безопасной, и у вас будет уникальный идентификатор сеанса в качестве плюса.

Ответ 3

Что касается передачи полномочий, он прав. Но есть много других вещей, которые нужно учитывать, например, история бриджей, серверные лог файлы, пользователи, смотрящие экран и т.д., Что было бы риском в этом случае.

Ответ 4

Безопасное - это большое слово. SSH не позволит другим пользователям извлекать его, но действительно ли вы хотите показать кому-то пароль в строке запроса. А как насчет чувака, стоящего над плечами пользователей? Что такое SQL-инъекция? На самом деле, плохая идея, по крайней мере, уложите ее в сообщение формы.

Ответ 5

Я понятия не имел, что HTTPS также зашифровал URL-адрес, это хорошо знать.

Однако с точки зрения безопасности меня будет больше беспокоить тот факт, что учетные данные можно прочитать в строке URL. Не говоря уже о возможно сохранении в истории браузера.

Ответ 6

Есть и другое решение, которое я пытаюсь. Вы можете использовать обработчики PHP для сеанса, чтобы хранить данные сеанса непосредственно в вашей базе данных в виде строки легко с помощью своих обработчиков. Вам потребуется таблица сеансов в вашей БД с истечением срока действия. Как только вы отправляете данные входа в HTTPS, если это правильно, вы можете сохранить его в переменной $_SESSION, и если вы хорошо поработаете с интерфейсом, он перейдет в вашу БД. Поскольку это не отображается вне PHP, у вас будет надежная система входа в систему, а в клиентских файлах cookie есть ТОЛЬКО хранимый идентификатор сеанса, а не токены, учетные записи или другие конфиденциальные данные.

Ссылка: http://es.php.net/manual/en/function.session-set-save-handler.php