Come utente non sai come viene crittografata la password (in realtà non è affatto crittografata, ma con hash).
Basta passare la password e MySQL può eseguire lo stesso hashing della password originale e confrontarla con ciò che è archiviato. Se si passa la versione hash, l'intero vantaggio dell'hashing è svanito:se qualcuno ottiene gli hash dal server, può semplicemente usarli per accedere come se fossero normali password. L'hash è quindi diventato la password.
Il vantaggio aggiuntivo è che MySQL, poiché ha la password originale, potrebbe ri-hash con un algoritmo migliore, aggiungere un po' di sale e memorizzare quella versione migliorata. Se non ottiene mai l'originale, non è possibile. Funzioni password di PHP
supporta anche questo. Puoi controllare con password_needs_rehash
se una password con hash è ancora correttamente sottoposta a hash e aggiorna il database se non lo è.
Quindi, per sicurezza, dovrai prendere altre misure. Questi sono almeno:
- Memorizza la password in un file di inclusione che risiede al di fuori della radice del documento. In questo modo, nessuno può aprire direttamente quel file.
- Puoi impedire che i file di inclusione vengano aperti senza essere inclusi (ad esempio controllando una definizione che è stata impostata in index.php). È bello, ma se PHP fallisce a causa di un errore di configurazione, le persone possono semplicemente sfogliare l'origine del file, quindi attenersi alla regola precedente.
- Crea sempre un utente del database speciale. Non usare
root
. Concedi a questo utente quanto basta per far funzionare il database, ma non di più. Nessun diritto per eliminare le tabelle, ad esempio. - Dai sempre a quell'utente una password univoca. Non è necessario ricordare questa password. Genera semplicemente spazzatura casuale con molti personaggi.
- Cambia la password regolarmente. Forse potresti anche scriverlo e memorizzare la password aggiornata nella configurazione.