Con respecto a las siguientes vulnerabilidades de OWASP:
-
Referencias de objetos directos inseguros . Con eso me refiero a dejar que alguien vea
/account/123/not-theirs
(esto podría ser la referencia incorrecta que estoy usando arriba).
¿Pueden solucionarse esto utilizando una base de datos que admita Row Level Security y creando cuentas de usuario reales en la base de datos para cada usuario y haciendo que inicien sesión en la base de datos como ellos mismos (a través del servidor web)?
¿Hay algún problema en este enfoque que deba conocer (que no sea el asesinato de la agrupación de conexiones)?
EDIT:
Uno obviamente necesita algún tipo de control de acceso de registro. ¿Por qué es peor mover el control de acceso a los registros desde la capa web a la capa de la base de datos, cuando está más centralizado? (Las bases de datos tienden a vivir más tiempo que las aplicaciones, y las bases de datos a veces tienen más de una aplicación).
La autenticación de usuario (almacenamiento) ocurre en un sistema diferente.
Los usuarios no son superusuarios y tendrían los privilegios mínimos requeridos (por eso quiero decir que no pueden ejecutar shells de comando en SQL u otras tonterías).
Los usuarios no tendrían acceso directo a la base de datos, solo acceso a través de una aplicación web.
Usaría roles jerárquicos.
Todavía usaría consultas parametrizadas, sin embargo, no todas las consultas son parametrizables, los desarrolladores cometen errores y los sistemas como Wordpress han demostrado que los complementos pueden obtenerlo.