Ho a che fare con un sistema (in fase di sviluppo) che utilizza stringhe univoche generate dall'utente (non fornite dall'utente) per autenticare i servizi che utilizzeranno un'API. In questo momento, queste stringhe sono memorizzate nel database in testo semplice.
Vorrei capire se c'è un motivo valido per riprogettare questo sistema, in modo che queste stringhe siano salate e con hash.
La mia comprensione dei motivi per cui memorizzare le password solo come hash salati è la seguente:
- Un utente malintenzionato può accedere al tuo database.
- A questo punto non ti rimane molto da perdere, l'utente malintenzionato può già accedere ai dati dei tuoi clienti e fare praticamente quello che vuole. Le password degli utenti sono un punto controverso. TUTTAVIA ...
- I tuoi utenti potrebbero utilizzare la stessa password per altre cose. Se non esegui il sale e l'hash correttamente, l'utente malintenzionato può utilizzare le credenziali rubate per ottenere il controllo di altre risorse, che non hanno nulla a che fare con il tuo sistema (oltre a condividere gli stessi utenti, con cattive abitudini di password).
In altre parole, il punto delle password saling e hashing è quello di proteggere gli utenti dalle conseguenze del riutilizzo della password. Nel mio caso, tuttavia, il riutilizzo della password non dovrebbe essere un fattore.
C'è ancora un motivo valido per modificare il sistema in modo che salti e cancellino anche queste "password"?
Modifica
Almeno alcuni di queste chiavi API finiranno comunque per essere incorporate in applicazioni ampiamente distribuite. La sola chiave API non sarà sufficiente per accedere a tutte le informazioni sensibili. Nella maggior parte dei casi sarà richiesto anche un nome utente e una password regolari. Alcuni utenti API con privilegi speciali saranno limitati dall'indirizzo IP.