A volte vedo domande che chiedono come archiviare in modo sicuro le password degli utenti per un'applicazione Web (utilizzando un RDBMS, non sto parlando di Facebook o Twitter). La solita risposta è "salt la password, quindi l'hash con un algoritmo forte come TDES o SHA512".
La mia domanda è: come utente RDBMS, perché dovrei preoccuparmi della memorizzazione della password problematica dal momento che la maggior parte dei motori ha un meccanismo di autenticazione incorporato.
Ad esempio, se un utente X desidera creare una password utente account Y sulla mia applicazione Web, come sta sbagliando la seguente query:
CREATE USER X WITH ENCRYPTED PASSWORD Y IN GROUP baseuser;
Quindi, all'interno della mia applicazione, l'utente può aprire una connessione al database usando le sue credenziali e non devo preoccuparmi affatto della gestione delle password.
Vedo molti vantaggi di questo metodo:
- Se RDBMS decide che l'algoritmo di crittografia deve essere modificato, non ho bisogno di toccare nulla, solo per applicare gli aggiornamenti di sicurezza;
- È facile per me gestire le autorizzazioni degli utenti. Se un utente viene promosso al ruolo di amministratore, devo solo aggiungere l'utente al gruppo corrispondente;
- Le iniezioni di SQL sono ora prive di significato, poiché gestisco le autorizzazioni per consentire esattamente ciò che desidero consentire a ciascun utente nel database (ad esempio, in un forum come SO, aggiungendo nuovi post, rispondendo ai post, commentando e modificando / eliminando le proprie domande / risposte / commenti);
- Un account utente "anonimo" può essere utilizzato per connessioni non autenticate alla mia applicazione;
- Ogni utente è il proprietario dei dati forniti.
Ma praticamente su ogni domanda che vedo su questo argomento, sembra esserci un consenso generale sul fatto che non è così che devono essere fatte le cose. La mia domanda è: perché?
Nota: il terzo punto è consentito dai criteri in PostgreSQL e dai criteri di sicurezza in Microsoft SQL Server. Mi rendo conto che questi concetti sono nuovi arrivati, ma comunque, ora che sono qui, perché la tecnica che descrivo non diventa il modo standard di gestire gli account degli utenti?