c3n2o ha scritto:
+m+ ha scritto:
non si può fare
Sì appunto.. volevo avere conferma.. perchè md5 e sha1 sono "one-way"
Non è quello l'elemento rilevante.
Esistono le funzioni AES_ENCRYPT ed AES_DECRYPT.
A parte che bisogna saperle usare bene (vettore di inizializzazione), cosa non banale, il punto è che memorizzi sul database delle password in formato criptato, ma "da qualche parte", nel sorgente PHP, ci sarà la password IN CHIARO.
Pertanto questo approccio può avere un suo vago utilizzo nel caso in cui qualcuno si copiasse il tuo database.
Se ha accesso al sorgente (per buchi di sicurezza e così via) allora non serve a nulla.
Il normale meccanismo (e trovi 1 miliardo di script di esempio, se sei pigro) è che la password viene rigenerata casualmente (qualora richiesta) ed inviata in forma temporanea all'utente.
---
Poi se vogliamo entrare nell'ambito professionale la risposta è:
- ti serve mariadb >=10.1
- devi abilitare la criptazione dell'intero database
- la chiave (che poi è un file) la devi mettere su un'altra macchina, che usualmente monterai con un tunnell SSH-NFS per renderla visibile al server mariadb. In questo caso metterai sul secondo server un'autenticazione a chiave pubblica.
Purtroppo, di nuovo, se qualcuno ha l'accesso root alla macchina può benissimo (avendone le capacità) pigliarsi la chiave privata, fakare quella pubblica e leggersi tranquillamente la chiave, e poi decriptare il database (ad esempio dumpandolo)
Riassumendo: la sicurezza del sistema è quella del suo punto più debole, che generalmente sono gli esseri umani, a seguire programmi e script di cui non si sa bene il funzionamento (copia-incollati) e scritti coi piedi.
Poi buchi vari di sicurezza, configurazioni errate e così via.