Realizzazione by siti.web.firenze e web.at.work

contatti
realizzazione siti web

PHP stringhe criptate | crypt

Le password non dovrebbero mai essere memorizzate in chiaro all'interno del database ma dovrebbero essere prima criptate. Alcuni database offrono un sistema di criptaggio interno, ma per tutti gli altri casi PHP può venire in aiuto. La funzione crypt() cripta una stringa utilizzando il Data Encryption Standard (DES). Questa è una modalità di criptaggio irreversibile, non si può infatti tornare indietro. Inoltre chiamate successive di crypt() restituiscono risultati diversi.

<?php
$pass = (isset($_GET['pass'])) ? $_GET['pass'] : '';
$encpass = '$1$FK3.qn2.$Si5KhnprsRb.N.SEF4GMW0';


if (crypt($pass, $encpass) === $encpass) {
echo 'Login successful.';
} else {
echo 'Login failed.';
}
?>

Per questo la stringa 'TopSecret' è criptata in $1$FK3.qn.$Si5KhnprsRb.N.SEF4GMW0 (e anche $1$m61.1i2.$0plJ3EHwklxycnyePplFzO e $1$9S3.c/3.$5101Bm4v3cnBNOblAECil, ma questo esempio fa riferimento solo alla prima conversione). Per controllare se un valore corrisponde a un risultato della funzione crypt() si può utilizzare una chiamata successiva di crypt(): crypt($value, $encryptedValue) che deve restituire $encryptedValue. Lo script precedente verifica se una password messa a disposizione attraverso la URL corrisponde al risultato precedente di crypt(). Chiamare lo script con il parametro GET pass=TopSecret permette di effettuare il login mentre tutte le altre password falliscono.

Qualche dettaglio in più: il secondo parametro di crypt() è il valore di inizializzazione per la cifratura dei dati: è possibile utilizzare questo valore per criptare la chiave orginale. Tuttavia è indispensabile verificare che tale valore della chiave sia unico altrimenti il criptaggio rischia di non essere sicuro. Pertanto non utilizzate una chiave con valore di inizializzazione fatto da voi e lasciate sia PHP a fare il resto del lavoro. Ricordatevi che la cifratura DES può essere aggirata in circa 24 ore, non è quindi così sicura. Un'alternativa più recente è l'Advanced Encryption Standard (AES).

 

separatore

Informazioni sull'autore

Sergio Ferraiolo

foto
Descrizione:

Web Master di webdesignfirenze.com, titolare di web.at.work che ha realizzato il sito.

Mansioni: Programmatore, web designer e Analista