Skip to main content

Cos’è la facade Crypt

Il servizio di cifratura di Laravel offre una semplice interfaccia per cifrare e decifrare valori usando la cifratura OpenSSL AES-256-CBC (o AES-128-CBC). Tutti i valori cifrati con Laravel sono firmati con un Message Authentication Code (MAC). Se il valore cifrato viene manomesso, non è più possibile decifrarlo.

Configurazione

Generare APP_KEY

Prima di usare la cifratura è necessaria la configurazione key di config/app.php. Questo valore viene letto dalla variabile d’ambiente APP_KEY. Usa il comando php artisan key:generate per generare una chiave sicura. Viene generata una chiave crittograficamente sicura usando il generatore di numeri casuali sicuro di PHP.
Di norma viene generata automaticamente durante l’installazione di Laravel. La chiave generata viene salvata nel file .env.
Non divulgare mai APP_KEY. Se venisse compromessa, tutti i dati cifrati sarebbero decifrabili.

Rotazione delle chiavi di cifratura

Cambiando la chiave di cifratura, tutte le sessioni utente autenticate vengono terminate. Questo perché Laravel cifra tutti i cookie, inclusi i cookie di sessione. Inoltre, i dati cifrati con la chiave precedente non potranno più essere decifrati. Per mitigare il problema, puoi elencare le chiavi precedenti in APP_PREVIOUS_KEYS, separate da virgola.
Laravel usa sempre la chiave corrente per cifrare. In fase di decifratura, se la chiave corrente fallisce, prova in ordine quelle precedenti. In questo modo gli utenti possono continuare a usare l’applicazione durante la rotazione delle chiavi.

Cifratura

Usa il metodo encryptString della facade Crypt per cifrare un valore. Il valore cifrato usa OpenSSL con cifratura AES-256-CBC e viene firmato con un MAC.
encryptString cifra la stringa senza serializzazione. Per cifrare oggetti o array usa encrypt.

Decifratura

Con il metodo decryptString della facade Crypt decifri un valore. Se la decifratura non riesce (ad esempio MAC non valido) viene lanciata DecryptException.

Cast dei modelli

Nei modelli Eloquent puoi cifrare e decifrare attributi automaticamente con il cast encrypted.
Con il cast configurato, gli attributi vengono cifrati/decifrati automaticamente al momento dell’assegnazione o della lettura.
I cast encrypted:* usano internamente Crypt::encrypt e Crypt::decrypt. Per la colonna del database sono consigliati i tipi text o longText.

Esempio pratico: salvataggio cifrato di dati personali

Pattern tipico per salvare in modo sicuro dati personali (codice fiscale, numero di carta di credito, ecc.) nel database.

Migration

Modello

Controller


Prossimi passi

Hashing

Impara come fare hashing sicuro delle password e come verificarle.

Autorizzazione

Il controllo degli accessi con Policy e Gate.
Ultima modifica il 13 luglio 2026