it-swarm-ru.tech

Имя пользователя и пароль в URL https

Рассмотрим URL: https: // foo: [email protected]

Соответствует ли часть имени пользователя/пароля в приведенном выше примере как "параметр URL", как определено в этот вопрос ?

55
jefflunt

Когда вы вводите имя пользователя и пароль перед Хостом, эти данные таким образом не отправляются на сервер. Вместо этого он преобразуется в заголовок запроса в зависимости от используемой схемы аутентификации. В большинстве случаев это будет Базовая аутентификация , что я опишу ниже. Аналогичная (но значительно реже используемая) схема аутентификации Digest Auth , которая в настоящее время обеспечивает сопоставимые функции безопасности.

При базовой аутентификации HTTP-запрос из вопроса будет выглядеть примерно так:

GET / HTTP/1.1
Host: example.com
Authorization: Basic Zm9vOnBhc3N3b3Jk

Хеш-подобная строка, которую вы видите там, создается браузером следующим образом: base64_encode(username + ":" + password).

Для посторонних лиц при передаче HTTPS эта информация скрыта (как и все остальное на уровне HTTP). Вы должны позаботиться о регистрации на клиенте и всех промежуточных серверах. Имя пользователя обычно будет отображаться в журналах сервера, а пароль - нет. Это не гарантируется, хотя. Когда вы вызываете этот URL на клиенте, например, с помощью curl, имя пользователя и пароль будут четко видны в списке процессов и могут появиться в файле истории bash.

Когда вы используете подход по ayush , имя пользователя и пароль всегда будут появляться в журналах сервера вашего веб-сервера, сервера приложений , кеши, ... если вы специально не настроили свои серверы, чтобы не регистрировать его. Это относится только к серверам, которые могут считывать незашифрованные данные http, например, к вашему серверу приложений.

Базовая аутентификация стандартизирована и реализована браузерами, показывая это маленькое всплывающее имя пользователя/пароль. Когда вы вводите имя пользователя/пароль в форму HTML, отправляемую через GET или POST, вы должны самостоятельно реализовать всю логику входа/выхода из системы (что может быть преимуществом). Но вы не должны никогда передавать имена пользователей и пароли по параметрам GET. Если вам нужно, используйте вместо него POST. Предотвращает запись этих данных по умолчанию.

При реализации механизма аутентификации с помощью формы ввода имени пользователя/пароля и последующего сеанса на основе файлов cookie, как это обычно используется сегодня, необходимо убедиться, что пароль передается с помощью POST запросов или одного из только стандартные схемы аутентификации.

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

100
Holger Just