Можно ли безопасно отправить имя пользователя и пароль через HTTPS через параметры URL? - PullRequest
41 голосов
/ 06 мая 2009

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

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

Ответы [ 6 ]

51 голосов
/ 06 мая 2009

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

32 голосов
/ 06 мая 2009

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

9 голосов
/ 06 мая 2009

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

6 голосов
/ 06 мая 2009

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

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

6 голосов
/ 06 мая 2009

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

1 голос
/ 05 мая 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...