Das Übergeben von Geheimnissen (Kennwörtern) an ein Programm über eine Umgebungsvariable wird laut MySQL-Dokumenten als "äußerst unsicher" und als schlechte Wahl (unter Sicherheitsaspekten) für andere Ressourcen angesehen .
Ich würde gerne wissen warum - was fehlt mir? Im erwähnten MySQL-Handbuch (ich verwende dies als Beispiel) wird die Übergabe des Kennworts über die -p
Option in der Befehlszeile als " unsicher " und über env var als " extrem unsichere ", fett kursive Schrift betrachtet.
Ich bin kein Experte, aber ich kenne die Grundlagen: Ein einfacher ps
Befehl, der sogar von einem nicht privilegierten Benutzer ausgegeben wird, liest jedes Programm zusammen mit den Befehlsparametern, während nur derselbe Benutzer (und natürlich root) die Umgebung des Prozesses lesen darf. Also, nur root
und johndoe
darf die Umgebung des johndoe
gestarteten Prozesses lesen , während gehacktes www-data
Skript alles über liest ps
.
Es muss hier eine große Sache geben, die ich vermisse - also erklären Sie mir bitte, was ich vermisse.
Mein Ziel ist es, das Geheimnis von einem Programm auf ein anderes zu übertragen, im Allgemeinen nicht interaktiv.
ps
.
export
in einem Skript und Ihr Passwort befindet sich jetzt im Klartext auf der Festplatte, was ebenfalls eine sehr schlechte Wahl ist.
mysql -ps3cret
Ihr Kennwort im Klartext in Ihre Shell-Verlaufsdatei eingefügt. Die Verwendung eines Skripts oder eines anderen Mittels zum Einfügen Ihres Kennworts in eine Umgebungsvariable bedeutet, dass sich das Kennwort (oder das Mittel zum Offenlegen des Kennworts) in diesem Skript befindet. Wenn Sie dies tunexport mysqlpasswd=s3cret
, wird Ihr Kennwort einfach wieder im Klartext zu Ihrem Shell-Verlauf hinzugefügt.