Wenn Sie das in einem Terminal verwenden, denken Sie daran, dass beide Anmeldeinformationen im Bash-Verlauf gespeichert sind?
Francisco Tapia
15
Ein solcher Befehl ist nicht sicher, da ein anderer Benutzer möglicherweise verwendet, ps -efum festzustellen, welche Prozesse ausgeführt werden. Wenn Sie curl -u username:password http://example.comin der Liste erscheinen, sind Ihr Ziel, Ihr Benutzername und Ihr Passwort gefährdet.
Dies ist nicht sicher, da cURL standardmäßig die Standardauthentifizierung verwendet , bei der das HTTP-Protokoll Ihr Kennwort im Klartext sendet. Wenn Sie die username:passwordZeichenfolge angeben , wird sie in eine BASE64- Zeichenfolge im HTTP-Header konvertiert :
Jeder, der in der Lage ist, Ihren HTTP-Datenverkehr abzufangen (Ihr Provider, jeder, der auf denselben WLAN- Zugangspunkt zugreift wie Sie usw.), kann das Kennwort mithilfe eines Online-BASE64-Konverters wiederherstellen .
Das HTTPS-Protokoll verbessert die Situation, indem eine verschlüsselte Verbindung hergestellt wird, bevor dieser Header gesendet wird, und verhindert, dass das Kennwort preisgegeben wird. Dies gilt jedoch nur, wenn der Benutzer aufgefordert wird, unbekannte Zertifikate zu bestätigen, Sicherheitsausnahmen zuzulassen usw.
Beachten Sie, dass möglicherweise Befehlsargumente für andere Benutzer auf demselben Computer verfügbar sind, um z. B. das ps -efDateisystem / proc in Ihrem Bash-Verlauf und in Ihrem Terminal-Protokoll anzuzeigen (vielen Dank für den Kommentar von @ Lambert, der dies bemerkt). cURL versucht auf einigen Plattformen, das Kennwort auszublenden, sodass beispielsweise bei ps -efIhnen wahrscheinlich ein Leerzeichen anstelle eines Kennworts angezeigt wird. Anstatt das Passwort als Befehlszeilenargument zu übergeben, ist es jedoch besser, cURL direkt zur Eingabe eines Passworts aufzufordern, wie in der cURL-FAQ beschrieben .
Selbst wenn Sie sich auf einer Plattform befinden, auf der curl erfolgreich sein eigenes Argument überschreibt, um Daten zu verbergen ps, dauert es eine Weile, bis das Überschreiben durchgeführt wird, bei dem dieser Inhalt anfällig ist.
Charles Duffy
Was ist mit Digest-Authentifizierung? Verwendet Curl das nicht standardmäßig?
rr
2
Die @ rr Digest-Authentifizierung ist nur unwesentlich besser, da sie Man-in-the-Middle-Angriffe nicht verhindert, sodass Sie mit HTTPS immer noch besser dran sind.
Dmitry Grigoryev
1
@rr Wie können Sie behaupten, dass StartSSL von den meisten Browsern nicht als vertrauenswürdig eingestuft wird ? Erwarten Sie viele Benutzer von Windows 95 oder Firefox 1.5?
Zusammen mit @Dmitry Grigoryev Antwort könnte es die genaueste sein.
Francisco Tapia
1
Ja, ich habe den großen Teil des Problems, das ich zugeben muss, völlig verpasst.
Dmitry Grigoryev
Befehl könnte Teil eines Skripts sein, das nur vom Benutzer gelesen werden kann ...
Pete
2
@Pete-Befehlszeilen zum Ausführen von Programmen (unabhängig davon, ob sie über ein Skript oder ein Terminal gestartet wurden) sind normalerweise für alle Benutzer über den psBefehl und das /procDateisystem sichtbar . Wenn der Befehl schnell beendet wird, wird das Risiko verringert, aber es ist immer noch da.
RBerteig
2
@Pete Answers sollen nicht exklusiv sein, sie ergänzen sich. Es ist also in Ordnung, wenn die zweite Antwort die in der ersten erläuterte Bedrohung weglässt. Es wäre jedoch überflüssig, sie zu wiederholen. Und ich würde die Aussage nicht falsch nennen, weil es nicht in jedem Fall möglich ist.
Dmitry Grigoryev
1
Dies könnte mit dem Parameter --netrc-file sicherer gemacht werden.
Erstellen Sie eine Datei mit 600 Berechtigungen
Zum Beispiel: vi / root / my-file
machine example.com
Login Benutzername
Passwort PASSWORT
Speichern und schließen Sie die Datei
Verwenden Sie das unten stehende, um auf die URL mit Benutzername und Passwort zuzugreifen.
Es ist unsicher, wenn das HTTP-Schema verwendet wird. Um es sicher zu machen, sollten Sie HTTPS verwenden.
Geben Sie nur den Benutzernamen an, um zu verhindern, dass das Kennwort im Befehlsverlauf angezeigt wird. Curl fordert zur Eingabe eines Kennworts auf, wenn dies nicht im Befehl angegeben ist.
ps -ef
um festzustellen, welche Prozesse ausgeführt werden. Wenn Siecurl -u username:password http://example.com
in der Liste erscheinen, sind Ihr Ziel, Ihr Benutzername und Ihr Passwort gefährdet.Antworten:
Dies ist nicht sicher, da cURL standardmäßig die Standardauthentifizierung verwendet , bei der das HTTP-Protokoll Ihr Kennwort im Klartext sendet. Wenn Sie die
username:password
Zeichenfolge angeben , wird sie in eine BASE64- Zeichenfolge im HTTP-Header konvertiert :Jeder, der in der Lage ist, Ihren HTTP-Datenverkehr abzufangen (Ihr Provider, jeder, der auf denselben WLAN- Zugangspunkt zugreift wie Sie usw.), kann das Kennwort mithilfe eines Online-BASE64-Konverters wiederherstellen .
Das HTTPS-Protokoll verbessert die Situation, indem eine verschlüsselte Verbindung hergestellt wird, bevor dieser Header gesendet wird, und verhindert, dass das Kennwort preisgegeben wird. Dies gilt jedoch nur, wenn der Benutzer aufgefordert wird, unbekannte Zertifikate zu bestätigen, Sicherheitsausnahmen zuzulassen usw.
Beachten Sie, dass möglicherweise Befehlsargumente für andere Benutzer auf demselben Computer verfügbar sind, um z. B. das
ps -ef
Dateisystem / proc in Ihrem Bash-Verlauf und in Ihrem Terminal-Protokoll anzuzeigen (vielen Dank für den Kommentar von @ Lambert, der dies bemerkt). cURL versucht auf einigen Plattformen, das Kennwort auszublenden, sodass beispielsweise beips -ef
Ihnen wahrscheinlich ein Leerzeichen anstelle eines Kennworts angezeigt wird. Anstatt das Passwort als Befehlszeilenargument zu übergeben, ist es jedoch besser, cURL direkt zur Eingabe eines Passworts aufzufordern, wie in der cURL-FAQ beschrieben .quelle
ps
, dauert es eine Weile, bis das Überschreiben durchgeführt wird, bei dem dieser Inhalt anfällig ist.Es ist nicht sicher. Befehlszeilenparameter sind für alle Benutzer sichtbar.
quelle
ps
Befehl und das/proc
Dateisystem sichtbar . Wenn der Befehl schnell beendet wird, wird das Risiko verringert, aber es ist immer noch da.Dies könnte mit dem Parameter --netrc-file sicherer gemacht werden.
Zum Beispiel: vi / root / my-file
machine example.com
Login Benutzername
Passwort PASSWORT
Speichern und schließen Sie die Datei
curl --netrc-file / root / my-file http://example.com
quelle
Es ist unsicher, wenn das HTTP-Schema verwendet wird. Um es sicher zu machen, sollten Sie HTTPS verwenden.
Geben Sie nur den Benutzernamen an, um zu verhindern, dass das Kennwort im Befehlsverlauf angezeigt wird. Curl fordert zur Eingabe eines Kennworts auf, wenn dies nicht im Befehl angegeben ist.
quelle
Kurze Antwort ist nein ... aber ....
Wenn es keine serverseitigen Optionen gibt, können Sie die Sicherheit verbessern.
Nichts davon ist weniger sicher als ein Browser, der HTTP verwendet.
quelle