Einführung

Teil 10

Geheimnisse, Sessions und Vertrauen: Nicht jeder Wert gehört in ein Skript

Automatisierung wird gefährlich, wenn jeder nützliche Wert wie harmloser Text behandelt wird. Passwörter, private Schlüssel, Cookies und Authentifizierungszustand brauchen einen anderen Lebenszyklus als Pfade, Bildgrößen oder Tabellennamen.

Den Wert klassifizieren, bevor er automatisiert wird

Ein Pfad, Archivname oder eine Bildbreite ist normale Konfiguration. Passwort, privater Schlüssel, Session-Token oder Datenbank-Zugang kann Zugriff gewähren. Werden beide Wertarten im selben wiederverwendbaren Skript gespeichert, wird das Skript selbst zum Geheimnis.

Vor dem Speichern zwei Fragen stellen: Kann dieser Wert etwas autorisieren? Würde ich diese Datei problemlos in ein anderes Projekt kopieren oder zur Prüfung teilen? Wenn nicht, gehört das Geheimnis nicht ins Rezept.

Die Umgebung lässt sich prüfen, ist aber kein Tresor

env maskiert absichtlich Werte mit sensibel wirkenden Namen. Das ist Schutz der Darstellung, kein Beweis, dass jede Umgebungsvariable sicher ist oder dass kein Geheimnis unter einem unerwarteten Namen existiert.

Nur den Namespace oder Wert ansehen, der wirklich gebraucht wird. Keine vollständigen Umgebungs-Dumps als Bildschirmaufnahme oder Export verbreiten und eine maskierte Terminalansicht niemals als Freigabe der zugrunde liegenden Serverkonfiguration verstehen.

env
env server
env request

Sessions und Cookies sind Anwendungszustand, kein Notizzettel

ses zeigt hierarchische PHP-Sessiondaten, coo sichtbare Cookies bewusst getrennt. Geschützter Authentifizierungs- und Session-Cookie-Zustand ist von normalen Export- und Überschreibpfaden ausgeschlossen.

Diese Grenze ist wichtig, weil Sitzungsdaten Identität, Berechtigung und temporären Anwendungszustand tragen können. Prüfen Sie gezielt, ändern Sie nur eigene Namensräume und verwenden Sie den Sitzungsspeicher nicht als bequemes Versteck für langfristige Geheimnisse.

ses -l
coo
coo -a

Ein Hash kann Gleichheit beweisen, aber das Original nicht verbergen

hash berechnet Digests und HMACs. Ein Digest beantwortet zuverlässig die Frage „Haben sich diese Bytes geändert?“ und eignet sich dazu, ein Archiv oder Veröffentlichungsartefakt eindeutig zu kennzeichnen.

Hashen ist keine Verschlüsselung. Stammt der Originalwert aus einer kleinen erratbaren Menge, macht ein Hash ihn nicht vertraulich. Verwenden Sie HMAC, wenn Authentizität von einem geheimen Schlüssel abhängt, und Verschlüsselung, wenn der Inhalt selbst unlesbar bleiben muss.

hash -s "hello terminal"
hash

Verschlüsselung schützt Inhalt nur, solange auch der Schlüssel geschützt ist

enc verwendet authentifizierte Chiffren, verdeckte Passworteingabe und Modi für exakt vorgegebene Schlüssel. Prüfen Sie zuerst mit enc, was der Server unterstützt; die normale Passworteingabe hält das Passwort aus der sichtbaren Befehlshistorie heraus.

Eine verschlüsselte Datei neben ihrem offengelegten Schlüssel ist kaum geschützt. Schlüssel und verschlüsselte Daten möglichst auf unterschiedliche Vertrauensgrenzen legen, Wiederherstellung vorher verstehen und Entschlüsselung testen, bevor der Klartext gelöscht wird.

enc

Dateisystemrechte begrenzen Zugriff, ersetzen aber keine Kryptografie

Ein Modus wie 0600 bedeutet, dass nur der aktuelle Dateieigentümer normal lesen und schreiben soll. Das ist für lokale Schlüsseldateien und private Exporte sinnvoll, wenn das Hosting UNIX-Modi respektiert.

Rechte schützen nicht vor dem Hosting-Kontoinhaber, Backups oder einem kompromittierten PHP-Prozess. Nach mod mit stat prüfen, was sich wirklich geändert hat, und Rechte mit dem passenden Speicher- und Verschlüsselungsmodell kombinieren.

cd lil-playground
md trust
echo "example private note" > trust/note.txt -r
mod trust/note.txt -0600
stat trust/note.txt
hash trust/note.txt

Bereinigung, Deinstallation und Zerstörung auseinanderhalten

clear löscht nur das sichtbare Transkript. uninstall <module> entfernt ein Extension-Modul. kill -include entfernt die optionale Interface-Schicht, kill -install die Extension-Schicht, und nacktes kill ist die Grenze zur vollständigen Terminal-Entfernung.

Diese Aktionen dürfen im Muskelgedächtnis nicht verschwimmen. Vor einer destruktiven Operation die Ebene benennen, die verschwinden soll, und die Dateien, die bleiben sollen. Ein sicherer Terminalnutzer kann den Rollback erklären, bevor Enter gedrückt wird.

Visuelle BereinigungclearNur Transkript; Dateien und Module bleiben
Modul entfernenuninstall <module>Ein Extension-Modul; Abhängigkeiten gelten
Interface zurücksetzenkill -includePersistente/Session-CSS- und JavaScript-Schicht
Extensions zurücksetzenkill -installInstallierte Extension-Schicht; Core bleibt
Vollständig entfernenkillDie lil-terminal-Installation selbst

Als Skript aufbewahren

Speichern Sie dies als trust-checkpoint.lil. Es erzeugt nur Beispieldaten, setzt einen restriktiven Dateimodus, erfasst Metadaten und speichert einen Digest. Entscheidend ist, was bewusst nicht automatisiert wird: Passworteingabe und Entschlüsselungsschlüssel bleiben außerhalb des Skripts.

#lil
@install md echo mod stat hash
cd lil-playground
md trust
echo "example private note" > trust/note.txt -r
mod trust/note.txt -0600
stat trust/note.txt
hash trust/note.txt > trust/note.sha256 -r
stat trust/note.sha256