Cualquier persona con una célula cerebral sabe que usar un usuario que no sea root / dbo / etc agrega mucho a la seguridad y la eficacia de los ataques de inyección SQL. Me pregunto si llevar esa idea un paso más allá es una buena idea.
La idea básica es simple. Para las acciones de tipo invitado (visualización), use un usuario 'invitado' en la base de datos que solo tiene permisos para select
things. Para acciones similares a usuarios (agregar / editar), tenga un usuario 'usuario', que solo tiene permisos para ejecutar las consultas insert
y update
. Además de eso, también incluye un tercer usuario con acciones similares a "admin", para delete
skills.
NB: Esto se ha simplificado para cubrir solo las habilidades básicas de CRUD
Pros:
- Teóricamente se agregó seguridad a través de límites de permisos.
- Hace que el CMS esté seguro para evitar ataques de suplantación / reproducción.
Cons:
- Código complicado dentro de un CMS (que es en lo que estoy pensando en usar esta función).
- Obliga a que el CMS sea seguro (lo que no siempre será posible)
Mi pregunta es la siguiente:
¿Existe algún beneficio de seguridad al separar los roles y permisos de esta manera? En caso afirmativo, los beneficios de hacerlo justifican un código más complicado para forzar a un usuario a cambiar dependiendo de un acción?
Por ejemplo, digamos que la comprobación para ver si cambio de usuarios es solo una instrucción if, y si esa declaración falla, entonces el usuario no puede hacer ninguna acción, por lo que el interruptor no lo hace. En primer lugar, sucederá.