Innanzitutto, non importa dove li memorizzi, devi assicurarti di hash corretto li . Questa è la priorità numero uno. E nota che hash , non encrypt . Sì, c'è differenza. Una grande differenza.
Per quanto riguarda dove archiviarli, l'ovvia scelta tradizionale sarebbe un database. Confrontiamo la memorizzazione delle password in un database per memorizzarle in un file. Entrambe le scelte hanno una serie di semplici errori che possono esporre i dati.
Per i database, è necessario assicurarsi di proteggere dall'iniezione SQL e rafforzare il server del database (non esporlo a Internet, utilizzare credenziali forti, ecc.).
Per i sistemi basati su file, esiste un gruppo separato di problemi:
- Metti il file fuori da webroot.
- Devi essere assolutamente sicuro che non ci siano vulnerabilità di inclusione locale dei file sul tuo server.
- Assicurati che il file non finisca nei backup, nei repository git, ecc.
Direi che è molto più facile farlo correttamente con un database, poiché hai una separazione più chiara tra codice e dati. Ma ciò che conta alla fine qui è l'implementazione. Una libreria di database homebrew scritta male con SQLi è peggio di una struttura consolidata e collaudata per i file.
Tuttavia, mi aspetto che sia più difficile farlo correttamente con i file che con un database. E per essere onesti, ottenere un sistema di accesso proprio in PHP è estremamente difficile da iniziare con . Perdona il mio pessimismo, ma la maggior parte delle persone che si sono impegnate a farlo falliscono e finiscono con sistemi insicuri. Forse dovresti esaminare i quadri esistenti? Ciò ridurrebbe notevolmente il rischio.
(Ovviamente, i database hanno alcuni vantaggi tecnici piuttosto importanti non legati alla sicurezza, ma qui lo escludo dai discus.)