Ho avuto questa idea di nascondere permanentemente la password dell'utente richiedendo una lunghezza minima, quindi eliminando alcuni caratteri. Ad esempio, se la password dell'utente è secret123
, il sistema lo ridurrà a ecrt12
, aggiungerà caratteri casuali ad esso come ecrt12!@#$%^&*
prima dell'hashing, aggiungendo salt, ecc., Quindi memorizzandolo su DB.
Sono state utilizzate anche tutte le pratiche comuni come:
- sale unico per utente
- pepe del sistema
- bcrypt / scrypt o qualsiasi altra migliore cripta algo disponibile
Per riepilogare nel codice:
$hash = hash($modifiedpassword.$uniquesalt.$systempepper)
// iterato a 1000 s.
Nel caso in cui un utente malintenzionato riesca a invertire tutti gli hash, le migliori informazioni che potrebbero mai recuperare sono ecrt12!@#$%^&*
e non l'originale secret123
. Anche se hanno hackerato il codice di sistema, non sapranno mai quali caratteri sono stati spogliati.
La mia domanda ora è come esperti di sicurezza, consiglieresti questa pratica di rimuovere / aggiungere la password dell'utente originale?