Introduzione

Parte 10

Segreti, sessioni e fiducia: non ogni valore deve finire in uno script

L’automazione diventa pericolosa quando ogni valore utile viene trattato come testo innocuo. Password, chiavi private, cookie e stato di autenticazione hanno bisogno di un ciclo di vita diverso da path, dimensioni immagine o nomi di tabella.

Classificate il valore prima di automatizzarlo

Un path, nome archivio o larghezza immagine è configurazione ordinaria. Una password, chiave privata, session token o credential database può concedere accesso. Mettere entrambi i tipi nello stesso script riutilizzabile trasforma lo script in un segreto.

Prima di salvare un valore chiedetevi: può autorizzare qualcosa? Sarei tranquillo a copiare questo file in un altro progetto o condividerlo per revisione? Se no, il segreto deve restare fuori dalla ricetta.

Ispezionare l’ambiente è utile, ma l’ambiente non è una cassaforte

env maschera intenzionalmente valori con nomi sensibili. È una protezione di presentazione, non prova che ogni variabile ambiente sia sicura o che non esista un segreto sotto un nome inatteso.

Ispezionate solo namespace o valore necessario. Evitate schermata ed esportazione di dump completi e non considerate una vista mascherata del terminale come permesso di pubblicare la configurazione reale del server.

env
env server
env request

Sessioni e cookie sono stato applicativo, non testo di appunti

ses mostra dati gerarchici della sessione PHP e coo mostra cookie visibili su una superficie separata. Lo stato protetto di autenticazione/cookie di sessione è escluso dai normali percorsi di esportazione e overwrite.

Il confine conta perché i dati session possono portare identità, autorizzazione e stato temporaneo. Ispezionate in modo stretto, cambiate solo namespace di vostra proprietà e non usate la sessione come nascondiglio per segreti di lunga durata.

ses -l
coo
coo -a

Un hash può provare l’uguaglianza; non può nascondere l’originale

hash calcola impronte e HMAC. Un’impronta è utile per rispondere alla domanda «questi byte sono cambiati?» e per registrare l’identità di un archivio o di un artefatto di versione pubblicata.

Il calcolo di un hash non è cifratura. Se il valore originale proviene da un piccolo insieme prevedibile, un hash non lo rende riservato. Usate HMAC quando l’autenticità dipende da una chiave segreta e la cifratura quando il contenuto stesso deve restare illeggibile.

hash -s "hello terminal"
hash

La cifratura protegge il contenuto solo finché è protetta anche la chiave

enc usa cifrature autenticate, inserimento nascosto della password e modalità a chiave esatta. Iniziate con enc per verificare ciò che il server supporta; l’inserimento nascosto mantiene la password fuori dalla cronologia visibile.

Un file cifrato accanto alla sua chiave esposta è poco protetto. Separa la chiave e dati cifrati tra confini di fiducia diverse quando possibile, capisci come funzionerà il recupero e prova la decifratura prima di eliminare il testo in chiaro.

enc

I permessi riducono l’accesso; non sostituiscono la crittografia

Un mode come 0600 dice che il proprietario corrente dovrebbe essere l’unico normale lettore/scrittore. È utile per key file locali ed esportazione privati quando l’hosting rispetta i mode UNIX.

I permessi non proteggono dal proprietario dell’account hosting, dai backup o da un processo PHP compromesso. Dopo mod, usate stat per verificare ciò che è davvero cambiato e combinate permessi con il corretto modello di storage e cifratura.

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

Distinguete pulizia, uninstall e distruzione

clear pulisce solo il cronologia visibile. uninstall <module> rimuove un extension module. kill -include rimuove il livello opzionale d’interfaccia, kill -install il livello extensions, e kill senza opzioni è il confine di rimozione completa del terminale.

Queste azioni non devono confondersi nella memoria muscolare. Prima di un’operazione distruttiva, nominate il livello da rimuovere e i file che devono restare. Un utente prudente sa spiegare il rollback prima di premere Invio.

Pulizia visivaclearSolo la cronologia visibile; file e moduli restano
Rimozione modulouninstall <module>Un extension module; valgono le dipendenze
Reset interfacciakill -includeLayer CSS/JavaScript persistent/session
Reset extensionskill -installLayer extensions installate; Core resta
Rimozione completakillL’installazione lil-terminal stessa

Conservalo come script

Salvate questo come trust-checkpoint.lil. Crea solo dati di esempio, applica un mode restrittivo, registra metadata e conserva un impronta. Notate che cosa non automatizza apposta: inserimento password e chiavi di decrypt restano fuori dallo script.

#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