curl -u username:password http://example.com
est-il sécurisé?
Sinon, pouvez-vous expliquer brièvement comment quelqu'un pourrait obtenir votre mot de passe?
C'est dangereux, car cURL utilise par défaut l'authentification de base où le protocole HTTP envoie votre mot de passe en texte clair. Lorsque vous spécifiez la chaîne username:password
, elle est convertie en chaîne BASE64 dans l'en-tête HTTP:
GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Toute personne pouvant intercepter votre trafic HTTP (votre fournisseur, toute personne accédant au même point d’accès sans fil que vous, etc.) pourra récupérer le mot de passe simplement en utilisant un convertisseur BASE64 en ligne .
Le protocole HTTPS améliorera les choses en établissant une connexion cryptée avant l'envoi de cet en-tête, empêchant ainsi la divulgation du mot de passe. Toutefois, cela ne s'applique que si l'utilisateur est attentif lorsqu'il lui est demandé de confirmer des certificats inconnus, d'autoriser des exceptions de sécurité, etc.
Notez que les arguments de commande peuvent être disponibles pour d'autres utilisateurs sur le même ordinateur, par exemple. ps -ef
, système de fichiers/proc, dans votre historique bash et dans votre journal de terminal (merci pour le commentaire de @ Lambert qui l'a noté). CURL sur certaines plates-formes tente de masquer le mot de passe. Par exemple, avec ps -ef
, vous risquez de voir un espace vide au lieu d’un mot de passe. Cependant, au lieu de passer le mot de passe en tant qu'argument de ligne de commande, il est préférable de demander directement à cURL Demander un mot de passe, comme indiqué dans la FAQ cURL .
Ce n'est pas sécurisé. Les paramètres de ligne de commande sont visibles pour tous les utilisateurs.
Cela pourrait être fait de manière plus sûre en utilisant le paramètre --netrc-file.
Par exemple: vi/root/my-file
exemple de machine.com
nom d'utilisateur connexion
mot de passe MOT DE PASSE
Enregistrez et fermez le fichier
curl --netrc-file/root/my-file http://example.com
Ce n'est pas sûr lorsque vous utilisez un schéma HTTP. Pour le sécuriser, vous devez utiliser HTTPS.
Pour que le mot de passe n'apparaisse pas dans l'historique des commandes, indiquez uniquement le nom d'utilisateur. Curl demandera un mot de passe, s'il n'est pas fourni dans la commande.
La réponse courte est non ... mais ....
S'il n'y a pas d'options côté serveur, vous pouvez renforcer la sécurité.
Aucun de ceux-ci n'est moins sécurisé qu'un navigateur utilisant HTTP.