Prima di tutto, non so come gli hacker ottengano un'intera tabella di password e li rubano. Non so se i proprietari del sito web siano da biasimare o cosa, ma mi chiedo se ciò implichi l'accesso al DB o meno.
Supponendo che gli hacker rubino le password accedendo al DB con gli utenti dell'applicazione o dell'amministratore, che ne dici di inserire le password nel proprio schema con privilegi a prova di spazio?
PASS.Password con la password hash e la chiave primaria / esterna UserId nella tabella Utente.
Le uniche autorizzazioni che ogni utente DB deve PASSARE dello schema sarebbe la procedura di esecuzione. Nemmeno gli amministratori di DB avrebbero letto i dati personali.
Authenticate by executing IsAuthenticated(@UserId, @HashedPassword) returns bit.
Create password by executing Create(@UserId, @HashedPassword) returns bit.
Update password by executing Update(@UserId, @OldHashedPassword, @NewHashedPassword) returns bit.
E questo è tutto ciò che ottieni. Nessun utente ha il permesso di leggere anche la password con hash, gli hacker potrebbero ancora rubare il tavolo anche se compromettessero l'ambiente?