Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + tecnología especializada

Especificar Reglas Para Control de Acceso

Nuestros ethical hackers explican cómo evitar vulnerabilidades de seguridad mediante la programación segura en Java al especificar reglas para el control de acceso. La aplicación debe asegurarse que sólo los usuarios autorizados tengan acceso a los recursos, estableciendo políticas de control.

Necesidad

Especificar las reglas para control de acceso de modo declarativo en Java.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se está desarrollando una aplicación bajo la plataforma Java (JEE o JSE).

  2. Se quiere ofrecer restricciones en cuanto a control de acceso.

Solución

En Java, es recomendable establecer políticas de control de acceso que especifiquen a qué recursos del sistema pueden acceder determinadas bases de códigos y quién debe firmarlos. Esto con el fin de preservar la confidencialidad e integridad de la información evitando que personas sin autorización accedan y/o modifiquen la misma.

  1. Hay dos modos de establecer el control de acceso en las aplicaciones: Declarativo y Programático.

  2. El modo declarativo consiste en la configuración estática del software de la plataforma, como, por ejemplo, el contenedor de un servlet.

  3. El modo programático se refiere a construir la lógica de autorización dentro del mismo código.

  4. En Java es usual hacer uso de métodos como EJBContext.isCallerInRole, HttpServletRequest.isUserInRole, EJBContext.getCallerPrincipal o HttpServletRequest.getUserPrincipal.

  5. La ventaja principal de utilizar el modo programático es que se tiene flexibilidad para especificar cualquier tipo de reglas de autorización por complejas que estas puedan llegar a ser.

  6. Pero, sus principales problemas son:

    • La lógica interna es entendida solo por el desarrollador de la aplicación, no por el encargado del despliegue.

    • Realizar cambios siempre implica modificar el código fuente y por ende pasar de nuevo por las etapas de compilación y despliegue.

    • No hay un único lugar estandarizado donde se centralicen las políticas deseadas.

    • Hacer una auditoría es complejo porque la información está dispersa en todo el código, cuando lo ideal es mantenerla centralizada.

    • Hay una mayor probabilidad de cometer errores y por tanto dejar vulnerabilidades al desarrollar estos mecanismos desde cero.

  7. En contra parte, todos los problemas descritos anteriormente son las ventajas con las que cuenta el método declarativo, por tanto, siempre que sea posible, el método declarativo debe ser la primera opción.

  8. Además, generalmente los servidores de aplicaciones JEE ofrecen implementaciones robustas de esta funcionalidad y por tanto son más confiables.

Referencias

  1. Securing Enterprise JavaBeans

  2. Designing Enterprise Applications

  3. REQ.0088: Debe preferirse especificar las reglas para control de acceso de modo declarativo en vez de modo programático.




Haz un comentario

Estado de los servicios - Términos de Uso