È davvero necessario cancellare le password degli utenti quando proteggi il mio database contro l'iniezione SQL? [duplicare]

-2

Sto sviluppando una scuola, ho appena applicato tutte le protezioni di SQL injection esistenti e la sicurezza del database, i ruoli amministrativi, le query parametrizzate, l'input igienico dal client.

Ma FOOL ME! Non ho mai cancellato le password degli utenti, le ho appena archiviate. Ma non penso che nessun hacker raggiungerà il dabatase.

Quindi dovrei cancellare le password o no?

Grazie :)

    
posta NathanWay 22.03.2015 - 21:12
fonte

3 risposte

6

Sì, dovresti.

Nessuno hash (password sono hash, non crittografato) password perché sanno che hanno una vulnerabilità di SQL injection. È un secondo livello di difesa.

Ed è necessario perché non puoi essere sicuro di non avere un'iniezione SQL. O che una libreria che usi non ne ha. O che non ci siano altre vulnerabilità, come XSS (se si dispone di un'opzione di esportazione del database), LFI (se il database è accessibile da remoto), esecuzione di codice, script di backup scritto male, ecc. Tramite il quale un utente malintenzionato può accedere al Banca dati.

Non sono del tutto sicuro di cosa significhi "sviluppare una scuola", ma se hai utenti effettivi e un attacco si verifica, sarà una pessima pubblicità se le tue password non sono state modificate, e potrebbe esserci anche qualche responsabilità da parte tua.

Ecco i motivi dell'hashing. Cosa sono contro? Voglio dire, è abbastanza facile, quindi fallo e basta.

    
risposta data 22.03.2015 - 21:43
fonte
4

SI !! È assolutamente necessario sia hash che salare le password. Come fai a sapere che "nessun hacker raggiungerà il database"? Ci sono probabilmente centinaia di modi in cui un database potrebbe essere compromesso; L'iniezione SQL è solo uno di questi. E anche se il tuo server e la tua applicazione web hanno vulnerabilità di sicurezza zero (improbabile), devi comunque affrontare possibilità come compromissione fisica del server e amministratori pigri / incuranti / canaglia che hanno accesso al database.

L'hashing e la salatura sono molto facili da eseguire, quindi non ci sono scuse per archiviare le password in chiaro. Tuttavia, è necessario assicurarsi di scegliere algoritmi di hashing e salatura sicuri. Nessun MD5 o SHA1!

Anche solo per chiarire la terminologia, l'hashing non è la stessa cosa della crittografia. La crittografia è un processo reversibile, mentre l'hashing non lo è. Quando si memorizzano le password in un database, la maggior parte delle volte si dovrebbe eseguire l'hash, non criptare.

    
risposta data 22.03.2015 - 21:44
fonte
0

Sì, devi usare le password utente hash, perché tu hai accesso al database. Non si dovrebbe mai avere accesso alle password degli utenti. Poiché hai accesso, anche chi ottiene il tuo livello di privilegi ha accesso. Così fa qualcuno che riesce a ottenere l'accesso diretto al database compromettendo il server. Così chiunque può vedere i tuoi backup. La password di un utente non dovrebbe mai essere nota a nessuno tranne quell'utente; mentre il tuo server deve impararlo temporaneamente, non dovrebbe archiviarlo più del necessario, per minimizzare il rischio che qualcuno lo ottenga.

    
risposta data 22.03.2015 - 22:31
fonte

Leggi altre domande sui tag