La sicurezza dei dettagli di accesso tramite sale e hash e un ruolo di accesso in postgresql

7

Sto codificando la sicurezza per un sito web nel database express.js e postgresql. Ora ho letto di salatura e hashing e ho impostato il codice con pbkdf2 usando il modulo crypto, ma il mio problema è come strutturerò la tabella degli account nel database.

Devo creare un ruolo di login che avrà un formato crittografato MD5 per la password, che sarà la chiave derivata dalla "procedura" salt e hash? Sarebbe eccessivo?

Ci sarà una tabella che sarà la seguente: UID (l'ID dal ruolo di login), SALT, HASH e anche il ruolo di login.

Quindi, durante una prova per l'autenticazione, il codice proverà ad accedere come tale ruolo, prima ottenendo l'UID assosiato, generando la password salt e hash per la password fornita e auth su un livello DB.

Spero di avere un senso.

   var usrSalt = crypto.randomBytes('128').toString('base64');
   //text , salt ,iterations , keylen , callback
   crypto.pbkdf2(usr, usrSalt, 10000, 512, function (err, derivedKey) {
       if (err) { console.log(err); }
       else {
           usr = derivedKey;
           next();
       }
   });

P.S. Un modulo pgcrypto sarebbe di nuovo migliore nello stesso scenario, semplicemente rimuovendo il codice su node.js.

    
posta czioutas 13.01.2014 - 16:48
fonte

1 risposta

2

Il modello più comune per le applicazioni Web è che l'applicazione esegua l'autenticazione utilizzando un account di ruolo e quindi esegua l'autenticazione dell'utente sul database. Non concederemo l'accesso ai singoli account degli utenti al database: si consideri il caso in cui il database viene inavvertitamente esposto a Internet. Vuoi che le credenziali dell'utente siano utilizzabili in quel caso? (È leggermente migliore nel caso che hai descritto, in cui sono derivati da alcune funzioni di PBKDF2.)

La tua applicazione web richiederà in ogni caso un account di ruolo: sarà necessario registrare nuovi utenti, recuperare il sale per utente per l'operazione PBKDF2 e (a seconda dell'applicazione) è necessario eseguire operazioni per utenti anonimi.

    
risposta data 08.01.2018 - 02:31
fonte

Leggi altre domande sui tag