Estoy empezando a escribir mi primera aplicación web seria y estoy pensando en cómo almacenar información de nombre de usuario y contraseña. Hay una gran cantidad de artículos que detallan cómo almacenar contraseñas de texto sin formato es una muy mala idea, y las contraseñas cifradas con sal son el camino a seguir. Sin embargo, puedo encontrar muy poco sobre la restricción del acceso a los datos del usuario en sí.
Estoy pensando en una situación en la que mi aplicación web está en peligro y un atacante puede leer cualquier información de mi base de datos. Incluso si almaceno nombres de usuario con contraseñas cifradas, el atacante podría eliminar todos los nombres de usuario de la base de datos (pero al menos no obtendrían las contraseñas). Sin embargo, podría restringir el acceso, por lo que incluso mi aplicación no tuvo acceso a estos datos. Estaba pensando en evitar que el usuario de mi base de datos vea la tabla con nombres de usuario y contraseñas. A continuación, puede dar acceso a través de un procedimiento almacenado que toma el nombre de usuario y la contraseña, devolviendo verdadero si se encuentra un nombre de usuario con la contraseña, o presentando una vista de los nombres de usuario y las contraseñas con hash, por lo que incluso si no se encuentran comprometidos, no se pueden encontrar los nombres de usuario reales .
Dado que soy nuevo en esto, y no he podido encontrar ningún artículo que recomiende algo similar, supongo que me he perdido algo simple que hace que las ideas anteriores sean inseguras.
Gracias.