Al momento, potremmo fare qualcosa come password varchar(72),
quando definiamo una colonna password, con ad esempio BCrypt. Ma c'è un sacco di gente che non lo fa in modo molto efficace. Forse hanno appena messo il testo in chiaro, o un singolo hash MD5 non salato, o qualche altra terribile strategia.
Ma praticamente tutti questi criminali usano ancora i database. Quindi, perché questo tipo di funzionalità non è integrato nei database? Qualcosa come mypass password('BCrypt:10'),
e accesso come INSERT INTO people(name, mypass, other_data) VALUES(?, ?, ?)
che prenderebbe la password in chiaro dall'utente e la passerebbe alla tabella. Ma la tabella memorizzerebbe il valore di hash BCrypt appropriato. Quindi, potremmo fare qualcosa come SELECT other_data FROM people WHERE name = ? AND mypass = ?
- questo di nuovo richiederebbe il testo in chiaro da parte dell'utente che accede, ma caricare il sale ed eseguire l'analisi per determinare se la password è stata un successo o meno.
Quando si tratta di archiviare i dati, utilizziamo i database anziché i file flat o ciò che hai perché sono affidabili, testati e semplici (rispetto al rolling nostro). Poiché è chiaro che in natura esistono innumerevoli casi in cui l'archiviazione delle password è inaffidabile e non testata, perché questo tipo di memorizzazione dei dati non è intrapreso dal database stesso?