Kann ich eine Kombination aus Benutzername und Kennwort verschlüsseln, bevor Sie sie mit cURL verwenden?

6278
Greg Guida

Ich mache ein Shellskript, das mit einem einfachen Auth einen Webdienst erreicht. Ich möchte nicht jedes Mal, wenn das Skript ausgeführt wird, meinen Benutzernamen und mein Kennwort eingeben, aber ich möchte auch nicht, dass sich die Kombination im Text im Klartext befindet. Ich weiß, dass der Benutzername und das Passwort base64-codiert werden, bevor sie über das Netzwerk gesendet werden. Gibt es eine Möglichkeit, sie zuvor zu codieren und in das Shellskript aufzunehmen?

3

2 Antworten auf die Frage

3
grawity

Nein.

Nun, technisch könnte man den Raw- AuthorizationHeader mit übergeben --header. Aber der Nutzen davon wäre genau null . Base64 ist nur eine Codierung, die zur Vermeidung von Beschädigungen binärer Daten verwendet wird, verdeckt jedoch nichts - sie kann base64von jedem, der Ihr Skript liest, in Sekundenschnelle umgekehrt werden, z. B. mit dem Befehl.

Mit anderen Worten, selbst wenn Sie dies tun, wird das Passwort immer noch in Klartext angezeigt.

Vielen Dank, dass Sie das geklärt haben, aber haben Sie Vorschläge, wie ich könnte: 1) Sie nicht jedes Mal das Kennwort eingeben und 2) es nicht in Klartext oder in Base64 speichern? Greg Guida vor 12 Jahren 0
Lesen Sie es aus einer externen Datei und belassen Sie diese Datei in einem verschlüsselten Dateisystem. Zum Beispiel hat curl die Option --netrc, um aus ~ / .netrc zu lesen, oder Sie können die Shell-Fähigkeiten verwenden, um von überall aus zu lesen. (Mit eCryptFS können Sie sehr einfach ein verschlüsseltes Verzeichnis ~ / Private / einrichten.) Wenn Sie GNOME oder KDE oder Windows oder Mac OS X verwenden, können Sie alternativ auch die Funktion "Schlüsselring" verwenden. grawity vor 12 Jahren 0
2
RedGrittyBrick

Sie könnten das Skript aus einer Datei lesen lassen. Sie können sicherstellen, dass das Skript mit einer effektiven Benutzer-ID ausgeführt wird, über die es Lesezugriff auf diese Datei erhält und Berechtigungen festgelegt werden, sodass dies für andere Benutzer nicht möglich ist.

Möglicherweise müssen Sie einige Ränder durchgehen, um setuid verwenden zu können. Dies bedeutet, dass Benutzer, die das Skript lesen und ausführen können, die Kennwortdatei nicht lesen können. Unix.stackexchange hat eine gute Antwort auf dieses Thema. Erhöhen Sie in Ihrem Fall nicht die effektive UID auf root, sondern verwenden Sie nur eine gewöhnliche ID, die nur für diesen Zweck erstellt wurde (z. B. läuft das Skript wie Wally, wally besitzt password.txt (r --------). Wally hat keine Besonderheit Privilegien, die jedoch zum Schreiben von Protokollen oder Ausgabedateien benötigt wurden, um mit anderen geteilt zu werden)