Безопасно ли использовать curl -u username:password http://example.com
?
Если нет, можете ли вы дать краткое объяснение того, как кто-то может получить ваш пароль?
Это небезопасно, потому что по умолчанию cURL использует базовую аутентификацию, когда протокол HTTP отправляет ваш пароль в виде открытого текста. Когда вы указываете строку username:password
, она преобразуется в строку BASE64 в заголовке HTTP:
GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Любой, кто сможет перехватить ваш HTTP-трафик (ваш провайдер, любой, имеющий доступ к той же беспроводной точке доступа, что и вы, и т.д.), Сможет восстановить пароль, просто используя онлайн-конвертер BASE64.
Протокол HTTPS улучшит ситуацию, установив зашифрованное соединение перед отправкой этого заголовка, предотвращая раскрытие пароля. Однако это применимо только в том случае, если пользователь обращает внимание на запрос подтверждения неизвестных сертификатов, авторизации исключений безопасности и т.д.
Обратите внимание, что аргументы команды могут быть доступны для других пользователей на том же компьютере, например, ps -ef
, /proc, в файловой системе bash и в журнале вашего терминала (спасибо за комментарий @ Lambert, отмечающий это). cURL на некоторых платформах пытается скрыть пароль, поэтому, например, с помощью ps -ef
вы, скорее всего, увидите вместо пароля пустое место. Однако вместо передачи пароля в качестве аргумента командной строки лучше использовать cURL, запрашивающий пароль, как обсуждалось в разделе часто задаваемых вопросов cURL.
Это не безопасно. Параметры командной строки видны всем пользователям.
Это можно сделать более безопасным способом, используя параметр --netrc-file.
Например: vi /root /my-file
машина example.com
Войти USERNAME
пароль ПАРОЛЬ
Сохраните и закройте файл
curl --netrc-file /root /my-file http://example.com
Это небезопасно при использовании схемы HTTP. Чтобы сделать это безопасно, вы должны использовать HTTPS.
Чтобы скрыть пароль от появления в истории команд, укажите только имя пользователя. Curl запросит пароль, если он не указан в команде.
Короткого ответа нет ... но ....
Если на стороне сервера нет опций, вы можете усилить безопасность.
Ничто из этого не является менее безопасным, чем браузер, использующий HTTP.