Estaba pensando en las recientes brechas de seguridad (aparentemente semanales) que hemos visto en las que se han filtrado millones de hash de contraseñas y me preguntaba cómo se podría proteger su sitio contra un volcado de contraseñas, incluso si un hacker encontró una inyección de SQL. vulnerabilidad.
¿Qué sucede si el usuario que estaba utilizando el sitio web para iniciar sesión en la base de datos tenía permisos más limitados? Digamos que en todos los datos no críticos el usuario tenía permisos completos como los normales (CRUD). Pero, ¿qué sucede si al usuario se le negaron todas las operaciones CRUD a la tabla que almacenaba los hashes de inicio de sesión, las preguntas de seguridad, etc. y solo podía ejecutar procedimientos almacenados en esa tabla? Y digamos que esos procedimientos almacenados nunca devolvieron los hashes de contraseña a la capa de la aplicación, sino que usted pasaría el hash al procedimiento y el procedimiento devolvería un valor booleano que indicaba si había una coincidencia.
Me parece que esta configuración eliminaría la posibilidad de un volcado de hash de contraseña a través de la inyección SQL por completo. ¿Esta configuración proporciona seguridad adicional, es recomendable?
Actualizar
Consulte esta pregunta para obtener más detalles: