Sta usando password_verify ($ password, "") per bloccare l'accesso a un account sicuro?

1

Stiamo migrando un vecchio sito Web, che utilizzava un hashing della password piuttosto vecchio alla nuova funzione di verifica della password php. Il vecchio metodo usava un vecchio hash, e vorremmo usare password_verify invece del vecchio metodo erano solo un hash e un sale era memorizzato. Il vecchio algoritmo di hash era obsoleto, quindi non vogliamo convertire il vecchio hash nella struttura password_verify (che potrebbe essere possibile).

Invece, bloccheremo l'accesso e chiediamo a un utente di reimpostare la sua password prima di continuare.

Domanda

Possiamo impostare l'hash utilizzato in password_verify in "" (stringa vuota) per bloccare l'accesso all'account?

    
posta user23127 23.01.2017 - 11:14
fonte

2 risposte

1

Dalla pura visione dell'hashing, sì, è sicuro. La nuova verifica della password utilizza bcrypt o blowfish per crittografare la password, in nessuno dei casi potrebbe essere eseguita su una stringa vuota da una password complessa.

Tuttavia, ci sono altre viste che potresti prendere in considerazione.

In primo luogo, la sicurezza non consiste solo nel chiudere le possibilità di attacco conosciute, ma anche nel chiudere qualsiasi sconosciuto al momento. Questo è veramente difficile. La difesa è facile contro qualsiasi cosa tu sappia.

In secondo luogo, un codice sicuro dovrebbe essere anche facile da capire, per evitare la comparsa di secholes da parte di più programmatori che non sanno che ognuno di loro lavora abbastanza bene. Vorrei menzionare il secchio remoto di root ssh di alcuni anni fa (anche se in questo caso esiste la possibilità che si trattasse di un attacco previsto).

Secondo me, faresti meglio il tuo compito se in qualche modo firmassi chiaramente nel tuo database che un account è chiuso a causa dell'aggiornamento dell'algoritmo, e non per qualche altro motivo, e il tuo codice di login / auth dovrebbe gestire specificamente questo Astuccio. Questo è quello che dovresti fare anche nel caso in cui conduca a codice apparentemente ridondante.

    
risposta data 23.01.2017 - 16:11
fonte
0

La mia soluzione per questo problema era: Non è necessario forzare l'utente a reimpostare la propria password. Basta aggiornare il codice php per mantenere l'aggiornamento della password con un nuovo hash con ogni tentativo di accesso per ciascun utente.

Non rimuovere il vecchio algoritmo di hash per verificare. Basta verificare la password con entrambi gli algoritmi. Se la password viene verificata con uno qualsiasi di questi algoritmi, allora lascia che l'utente effettui il login, ma prima controlla che l'algoritmo abbia funzionato per quell'utente. Se il vecchio algoritmo ha funzionato per il login, allora significa che questa password è stata creata con un vecchio algoritmo di hash, quindi in quella fase la password utente hash con il nuovo algoritmo hash e l'aggiornamento nel database.

Quindi in questo modo il database aggiornerebbe automaticamente le sue password con l'aiuto del tuo codice php con un nuovo algoritmo di hash.

Quindi ad ogni evento di accesso, la password verrebbe modificata automaticamente in un nuovo algoritmo hash e non è necessario forzare l'utente a reimpostare la propria password.

    
risposta data 25.01.2017 - 15:08
fonte

Leggi altre domande sui tag