Magento SUPEE-6285 y el acceso denegado a los módulos

Acceso denegado en módulos custom de Magento

El nuevo parche de seguridad trajo algunas cuantas mejoras, pero como todo gran parche del core, conlleva una gran responsabilidad por parte de los que desarrollamos extensiones. (Si, gracias Tío Ben)

Uno de los problemas que se están viendo y/o estamos sufriendo, es que al querer acceder, como de costumbre, a cualquiera de los módulos custom, en el escenario en el cual un usuario tiene un perfil con accesos restringidos, obtenemos el mensaje de “Acceso denegado” en lugar de la funcionalidad.

Esto se debe a uno de los cambios introducidos por el parche, en particular en la clase Mage_Adminhtml_Controller_Action.

Allí el método isAllowed nos muestra:

Método isAllowed

Antes, simplemente devolvía true.

En el escenario anterior, no se estaba validando correctamente que un usuario tuviera realmente los permisos suficientes para llegar a una funcionalidad. Simplemente se la estaba escondiendo.

Para que nuestros módulos funcionen, primero, debemos agregar en nuestro controller un override del método _isAllowed.

Por ejemplo:

Override de isAllowed en Magento

En mi caso le indico que el path a validar es system/regions.

Ese path está definido en el archivo adminhtml.xml de nuestro módulo.

Adminhtml.xml de un módulo en Magento

Una vez aplicado el cambio en nuestro controller, un usuario con un rol restringido ya podrá acceder correctamente a todas las secciones asignadas.

Acceso a módulo con validación ACL

Definitivamente estos días nos vamos a encontrar con los siguientes escenarios:

  • Infinidad de desarrolladores publicando actualizaciones de los módulos.
  • Una buena cantidad de usuarios quejándose que no pueden acceder a la sección X de su backend.
  • Otra buena cantidad de desarrolladores agotados de actualizar módulos y armar deploys para llevar a producción.