Descubrí que en la clase \Magento\Backend\App\AbstractAction
(el antecesor de cada acción de controlador de administrador) hay un miembro llamado _publicActions
que se usa en la validación de la clave secreta de esta manera:
if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
return true;
}
Esto significa que si aparece un nombre de acción determinado _publicActions
, puede acceder a la acción sin la clave secreta en la url.
Esto es una bendición para el desarrollo y la depuración, porque puede hacerlo de forma ROOT/admin/module/controller/action
manual, sin la necesidad de conocer la clave secreta de administrador, pero lo que no entiendo es por qué puedo acceder a la página de edición del producto sin la clave secreta.
Simplemente llame a cualquier página de edición de productos como esta ROOT/admin/catalog/product/edit/id/{product_id_here}
.
El publicActions
miembro se sobrescribe para pedidos (que permiten indexar y ver), en productos (para editar) y en el controlador de redireccionamiento para redireccionamientos.
Ahora mi pregunta:
¿Por qué solo se permiten algunas acciones de edición sin la clave secreta, y cuándo / qué debo permitir en mis módulos CRUD personalizados sin la clave secreta?
fuente
Si tuviera que adivinar, diría que es porque la clave secreta puede usarse como parte de la protección CSRF y / o XSS incorporada en Magento. Entonces, para las páginas que no modifican su contenido en función de la entrada del usuario, puede que no sea necesario tener la clave secreta allí.
Dicho de otra manera, solo las acciones que reciben datos / entradas proporcionadas por el usuario están protegidas con una clave secreta. Solo una suposición.
fuente