La autorización determina qué puede hacer un usuario o un sistema en nuestra aplicación.
Si la autenticación gestiona el acceso de un usuario, la autorización gestiona los permisos de ese usuario a las diferentes funciones, operaciones y recursos de la aplicación.
Imagen: CPO Magazine
Posibles riesgos
A continuación se describen algunos de los posibles riesgos relativos a la autorización:
- Acceso no autorizado. Un usuario no autorizado podría acceder a recursos no permitidos.
- Escalada vertical de privilegios. Acceso a los recursos de otro usuario con un nivel más alto de permisos.
- Escalada horizontal de privilegios. Acceso a los recursos de otro usuario con el mismo nivel de acceso.
- Revelación de información sensible. La aplicación podría dar más información de la necesaria, lo cual podría ser usada de forma perniciosa.
- Violación de la privacidad. Un atacante accede a datos privados de otros usuarios.
- Robo de identidad. Un atacante obtiene la identidad de un usuario y la usa para acceder a la aplicación y realizar acciones con sus permisos.
- Robo de datos. Un atacante obtiene datos de forma ilícita.
- Disponibilidad del servicio. Un atacante podría interrumpir o dañar el servicio o la ejecución de la aplicación.
- Manipulación de datos. Un atacante podría interceptar datos entre cliente y servidor y manipular éstos.
- Modificación de registros. Acceso a los registros de la aplicación o del sistema y modificación de éstos alterando su integridad.
- Path transversal. Acceso fuera del contexto autorizado en el sistema de archivos del servidor.
- Lógica de negocio. Un mal diseño de la aplicación podría permitir a un usuario realizar operaciones no permitidas, debido a que no sigue una lógica de negocio controlada.
Mejores prácticas
He aquí algunas recomendaciones para elevar la seguridad en la autorización:
- Principio de privilegio mínimo. El usuario solo tiene permitido lo mínimo para realizar su trabajo.
- Roles de aplicación. El usuario solo tiene roles, y los privilegios son tomados de dichos roles.
- El acceso a los registros ha de estar protegido.
- Cada usuario sólo puede acceder a los datos y recursos que le son autorizados.
- Acceso al sistema de archivos esté deshabilitado. Este acceso solo puede ser habilitado de forma excepcional, justificada y expresa.
- Las reglas de control de acceso solamente se han de aplicar en el servidor.
- La gestión de acceso a datos, atributos, información, roles, políticas, etc. de los usuarios no pueden ser manipulados por usuarios no autorizados.
- Uso de un servicio centralizado que proteja el acceso a cada recurso.
- Uso de tokens aleatorios robustos anti-CSRF.
- Registro de todo intento de control de acceso (registro de seguridad).
- Registro específico y detallado (registro de seguridad) de todas las operaciones sobre datos sensibles.
- Uso de captchas en operaciones sensibles.