Descobri que na classe \Magento\Backend\App\AbstractAction
(o ancestral de todas as ações do controlador administrativo) existe um membro chamado _publicActions
usado na validação da chave secreta como esta:
if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
return true;
}
Isso significa que, se um determinado nome de ação estiver listado, _publicActions
você poderá acessar a ação sem a chave secreta no URL.
Essa é uma bênção para o desenvolvimento e a depuração, porque você pode fazê-lo ROOT/admin/module/controller/action
manualmente, sem a necessidade de conhecer a chave administrativa secreta, mas o que não entendo é por que posso acessar a página de edição do produto sem a chave secreta.
Basta ligar para qualquer página de edição de produtos como esta ROOT/admin/catalog/product/edit/id/{product_id_here}
.
O publicActions
membro é substituído por pedidos (que permitem indexar e exibir), em produtos (para edição) e no controlador de redirecionamento para redirecionamentos.
Agora, minha pergunta:
por que apenas algumas ações de edição são permitidas sem a chave secreta e quando / o que devo permitir em meus módulos CRUD personalizados sem a chave secreta?
fonte
Se eu tivesse que adivinhar, diria que é porque a chave secreta pode ser usada como parte da proteção CSRF e / ou XSS incorporada ao Magento. Portanto, para páginas que não modificam seu conteúdo com base na entrada do usuário, pode não ser necessário ter a chave secreta.
Dito de outra forma, apenas as ações que recebem dados / entrada fornecidos pelo usuário são protegidas com uma chave secreta. Apenas um palpite.
fonte