2012-08-31 4 views
6

Sto lavorando a un'app Web per il mio progetto Masters. È un sistema che consente ai professori di gestire i progetti degli studenti e utilizza Java per il codice lato server, HSQLDB per il database e JSP per il livello di presentazione e viene eseguito su tomcat. I dati che verranno memorizzati non includono alcuna informazione sensibile (ID studente, informazioni finanziarie, niente di simile), ma i nomi utente e le password sono un requisito, quindi voglio proteggere le password stesse nel caso in cui uno studente utilizzi una password per la mia app che usano per qualche altra app più importante (questo accadrà senza dubbio anche se dirò alla gente di non farlo).Trasmissione e protezione corrette delle password degli utenti per un'app Web

Non ho mai esaminato questo tipo di cose prima e sono piuttosto perso. Ho trovato un buon articolo che spiega come usare Java a create a hash of a password e ho trovato informazioni nello tomcat documentation che spiega come impostare lo schema di hash utilizzato nei regni e come fare SSL with tomcat, nonché un JavaScript library per creare hash da password, ma Non sono sicuro di come mettere insieme tutti i pezzi e di quali pezzi ho bisogno esattamente.

Se utilizzo la libreria JavaScript per hash la password e utilizzo SSL per il passaggio di accesso (non è necessario dopo che penso poiché gli altri dati non necessitano di protezione), quindi memorizzare solo le versioni hash delle password nel database è sufficiente? O devo fare qualcosa di più? Mi sono imbattuto in a question dove le risposte hanno discusso PBKDF2 e alcune altre cose, ma mi ha semplicemente confuso di più ... Se dovessi usare uno degli schemi menzionati in quelle risposte, come faccio a farlo? Non ho visto riferimenti a loro in tomcat o altra documentazione, quindi non so come li userei ...

Se qualcuno può chiarire la mia confusione e dirmi quale sia il modo corretto di trasmettere in modo sicuro e memorizzare le password è, lo apprezzerei molto.

risposta

3

SSL si occupa di proteggere l'intero livello di trasporto. Non devi preoccuparti dei dati inviati su HTTPS.

Non memorizzare mai password reali nel database. Archivia solo gli hash salati fatti con le funzioni hash appropriatamente sicure (cioè non MD5). Usa un sale diverso per ogni hash.

Se si seguono questi principi, indipendentemente dai componenti utilizzati, si dispone di un meccanismo di memorizzazione del nome utente/password ragionevolmente valido.

+2

assicurati di _saltare i tuoi hash_! – jtahlborn

+0

@jtahlborn, Sì! Come avrei potuto dimenticarlo. Aggiunto alla risposta, grazie! – Brad

+0

è possibile a prova di futuro la memorizzazione memorizzando l'algoritmo utilizzato w/ogni password. che ti consente di aggiornare l'algoritmo in futuro senza rompere gli utenti esistenti. – jtahlborn

Problemi correlati