El método habitual para sitios simples es almacenar un hash de la contraseña de un usuario en su registro de usuario.
¿Qué sucede si el campo de contraseña se elimina de la tabla de usuarios y se crea una tabla de contraseñas? La tabla de contraseñas tendría el mismo hash de contraseña, pero en lugar de la ID de usuario, la clave de la tabla es otro hash: un hash del ID de usuario y alguna clave secreta.
La idea es que si obtienes una copia de la tabla de usuarios, no obtendrás los hashes de contraseña. Si obtiene el usuario y la tabla de contraseñas, no podrá conectar una contraseña a ninguna cuenta de usuario en particular.
Supongo que si pudiera romper el hash de contraseña, tendría un puñado de contraseñas que sabe que están en uso en el sistema. Puedes probar cada contraseña en cada cuenta hasta que funcione. Así que tal vez respondí a mi propia pregunta. Sin embargo, ¿hay algo que me falta? Se siente como una buena idea, pero no pude encontrar nada al respecto.
Supongo que podría ser fácil detectar un ataque que está utilizando una lista de contraseñas que existen para los usuarios en el sistema y bloquear o cerrar el ataque de otra manera.