Reparando extensiones despues de SUPEE-6788
En esta página
Si aplicaste el parche de seguridad SUPEE-6788 a una tienda Magento 1 y de repente la mitad de tus extensiones dejaron de funcionar, no estás solo. El parche cierra algunos agujeros de seguridad reales, pero al hacerlo cambia unos cuantos comportamientos de los que muchos módulos de terceros dependían. Estos son los problemas con los que me topé y cómo los resolví.
1. Los controladores de admin deben vivir bajo el router adminhtml
Este es de lejos el más común (APPSEC-1063). Antes del parche, las extensiones podían declarar controladores de admin
bajo su propio router de frontend. Después de él, los controladores de admin deben alcanzarse a través del router
adminhtml.
La solución es mover el controlador y actualizar su routing. En el config.xml, el route de admin pasa de
<admin><routers> a <adminhtml><args><modules>:
<!-- app/code/community/Vendor/Module/etc/config.xml -->
<adminhtml>
<args>
<modules>
<Vendor_Module before="Mage_Adminhtml">Vendor_Module_Adminhtml</Vendor_Module>
</modules>
</args>
</adminhtml>Luego mueve el archivo del controlador desde controllers/Adminhtml/ y ajusta su nombre de clase/namespace en
consecuencia. Magento incluso trae una herramienta, shell/rewrites.php, que lista los controladores que hay que mover.
2. Whitelist de nombres de bloque
El parche introdujo una whitelist para los bloques que se pueden instanciar desde layout updates y contenido CMS (APPSEC-1057). Si tu extensión (o un bloque CMS) referencia un bloque que no está en la whitelist, deja de renderizarse en silencio.
Lo agregas a la whitelist añadiendo una fila a la tabla permission_block, o desde el admin en System > Permissions >
Blocks, poniendo tu bloque como Allowed.
3. Whitelist de variables y directivas
Las variables personalizadas y las directivas {{block}} usadas en páginas CMS, bloques estáticos y plantillas de email
también están restringidas ahora. Si una plantilla deja de resolver una directiva, agrega la variable en System >
Permissions > Variables, o inserta la ruta permitida en la whitelist admin_directive / core_variable.
Una vez que conoces estos tres, la mayoría de los tickets de “mi extensión se rompió después del parche” se resuelven en minutos. El parche vale la pena aplicarlo, no dejes que un par de arreglos de compatibilidad te convenzan de lo contrario.
Espero que esto ayude.
Si tienes alguna pregunta o te topaste con un problema distinto, siéntete libre de compartir en los comentarios a continuación.