Azioni pubbliche nei controller di amministrazione


12

Ho scoperto che nella classe \Magento\Backend\App\AbstractAction(l'antenato di ogni azione del controller di amministrazione) esiste un membro chiamato _publicActionsche viene utilizzato nella convalida della chiave segreta in questo modo:

 if (is_array($this->_publicActions) && in_array($this->getRequest()->getActionName(), $this->_publicActions)) {
     return true;
 }

Ciò significa che se un determinato nome di azione è elencato in _publicActionspuoi accedere all'azione senza la chiave segreta nell'URL.
Questa è una benedizione per lo sviluppo e il debug, perché puoi semplicemente farlo come ROOT/admin/module/controller/actionmanualmente, senza la necessità di conoscere la chiave di amministrazione segreta, ma ciò che non capisco è perché posso accedere alla pagina di modifica del prodotto senza la chiave segreta.
Chiama qualsiasi pagina di modifica del prodotto come questa ROOT/admin/catalog/product/edit/id/{product_id_here}.

Il publicActionsmembro viene sovrascritto per gli ordini (che consentono l'indice e la visualizzazione), nei prodotti (per la modifica) e nel controller di reindirizzamento per i reindirizzamenti.

Ora la mia domanda:
perché sono consentite solo alcune azioni di modifica senza la chiave segreta e quando / cosa dovrei consentire nei miei moduli CRUD personalizzati senza la chiave segreta?

Risposte:


4

Non ho mai visto una risposta ufficiale da parte di un ingegnere Magento sull'argomento, ma a me è sempre sembrato che questa funzione dovesse essere utilizzata quando si desidera che gli utenti siano in grado di collegarsi a una pagina al di fuori di una sessione sicura, altrimenti fare clic su un collegamento che fa riferimento a un URL di amministratore sicuro ti reindirizzerà alla dashboard solo dopo aver richiesto di accedere.

Ho sempre avuto in mente due scenari: o vuoi che gli utenti siano in grado di condividere determinate pagine di amministrazione con altri utenti o vuoi che qualche pagina pubblica faccia riferimento al tuo URL personalizzato nel back-end Magento (che altrimenti reindirizzerebbe solo alla dashboard) .

Quando guardi il core di Magento puoi vedere che Magento lo ha sostanzialmente implementato per recensioni, ordini e pagine di prodotti. Suppongo che gli ingegneri di Magento lo abbiano fatto in modo che gli utenti amministratori di un negozio siano in grado di inviare collegamenti direttamente tramite un messenger o una e-mail (come in "Ehi, controlla questo ordine: [url] ."). Una volta ho implementato una funzionalità come questa per una pagina quando volevo che fosse facilmente condivisibile dagli utenti amministratori.

Fondamentalmente stai scambiando il rischio aumentato di un attacco CSRF per la libertà di poter collegare direttamente una pagina nel tuo back-end di amministrazione, cosa che dovrebbe essere fatta solo quando hai in mente un caso d'uso molto certo. Suppongo che le pagine CMS non rientrassero nel caso d'uso per il core team di Magento in quanto sembravano aver limitato questa "caratteristica" alle azioni relative all'assistenza clienti e alla modifica dei prodotti - fondamentalmente le attività più comuni per i rappresentanti del servizio clienti in molti I negozi.


Questo ha senso. +1 Se non sento una risposta ufficiale (diversa da questa) da un membro del team nelle prossime 24 ore, il segno di spunta è tuo.
Marius

0

Se dovessi fare un'ipotesi, direi che è perché la chiave segreta può essere utilizzata come parte della protezione CSRF e / o XSS integrata in Magento. Pertanto, per le pagine che non modificano il suo contenuto in base all'input dell'utente, potrebbe non essere necessario disporre della chiave segreta lì.

Detto in altro modo, solo le azioni che ricevono dati / input forniti dall'utente sono protette con una chiave segreta. Solo una supposizione.


se ciò fosse vero, anche la modifica di una pagina CMS dovrebbe essere "pubblica". Quindi dovrebbe modificare un cliente o una regola fiscale.
Marius

Questo è un punto giusto; e la risposta di TiEul ha senso. Stavo prendendo una pugnalata nel buio, sembra che mi mancasse.
Brett,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.