Это небезопасно, потому что по умолчанию 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 .