Yönetici denetleyicilerinde genel işlemler


12

Sınıfta \Magento\Backend\App\AbstractAction(her yönetici denetleyicisi eyleminin atası) _publicActionsböyle gizli anahtarın doğrulamasında kullanılan denilen bir üye olduğunu keşfettim :

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

Başka bir deyişle, belirli bir işlem adı listelenirse _publicActions, url'deki gizli anahtar olmadan eyleme erişebilirsiniz.
Bu, geliştirme ve hata ayıklama için bir nimettir, çünkü ROOT/admin/module/controller/actiongizli yönetici anahtarını bilmenize gerek kalmadan manuel olarak da yapabilirsiniz, ancak anlamadığım şey gizli anahtar olmadan ürün düzenleme sayfasına neden erişebileceğimdir.
Bunun gibi herhangi bir ürün düzenleme sayfasını çağırmanız yeterlidir ROOT/admin/catalog/product/edit/id/{product_id_here}.

publicActionsÜye ürünlerinde (düzenleme için) ve yönlendirmeler için yönlendirme denetleyicisi, (endeks ve görünümü tanıyın) siparişler için yazılır.

Şimdi sorum:
Gizli anahtar olmadan yalnızca bazı düzenleme işlemlerine izin veriliyor ve gizli anahtar olmadan özel CRUD modüllerimde ne zaman / neye izin vermeliyim?

Yanıtlar:


4

Bu konuda bir Magento mühendisinden resmi bir cevap görmedim, ancak bana göre bu özellik, kullanıcıların güvenli bir oturumun dışından bir sayfaya bağlantı verebilmelerini istediğinizde kullanıldığını, aksi takdirde güvenli bir yönetici URL'sine referansta bulunan bir bağlantı, yalnızca giriş yapmanızı istedikten sonra sizi kontrol paneline yönlendirir.

Her zaman iki senaryo aklımdaydı: Ya kullanıcıların belirli yönetici sayfalarını diğer kullanıcılarla paylaşabilmesini ya da genel bir sayfanın Magento arka ucundaki özel URL'nize referans vermesini istiyorsunuz (aksi takdirde yalnızca gösterge tablosuna yönlendirirsiniz) .

Magento çekirdeğine baktığınızda, Magento'nun bunu incelemeler, siparişler ve ürün sayfaları için temel olarak uyguladığını görebilirsiniz. Magento mühendislerinin bunu yaptıklarını düşünüyorum, böylece bir mağazanın yönetici kullanıcıları doğrudan bir haberci veya bir e-posta yoluyla bağlantı gönderebilir ("Hey, bu siparişe bakın: [url] ."). Yönetici kullanıcıları tarafından kolayca paylaşılabilmesini istediğimde, bir sayfa için böyle bir özelliği uyguladım.

Temel olarak, yönetici arka ucunuzdaki bir sayfaya doğrudan bağlantı kurabilme özgürlüğü nedeniyle artan bir CSRF saldırısı riskini alıp satıyorsunuz. Bu, yalnızca çok belirli bir kullanım durumunuz olduğunda yapılmalıdır. Sanırım CMS Pages, Magento çekirdek ekibi için bu "özelliği" müşteri desteği ve ürünlerin düzenlenmesi ile ilgili eylemlerle sınırlı tutuyor gibi göründü - temelde birçok müşteri hizmetleri temsilcisi için en yaygın görevler mağazalar.


Bu mantıklı. +1 Önümüzdeki 24 saat içinde bir ekip üyesinden (bundan farklı) resmi bir cevap duymazsam, onay işareti size aittir.
Marius

0

Bir tahminde bulunmam gerekirse, bunun gizli anahtarın Magento'da yerleşik CSRF ve / veya XSS korumasının bir parçası olarak kullanılabileceği için söyleyebilirim. Dolayısıyla, kullanıcı girdisine göre içeriğini değiştirmeyen sayfalar için gizli anahtarın olması gerekli olmayabilir.

Başka bir deyişle, yalnızca kullanıcı tarafından sağlanan verileri / girişi alan eylemler gizli bir anahtarla korunur. Sadece bir tahmin.


bu doğruysa, bir CMS sayfasını düzenlemek de "herkese açık" olmalıdır. Bu yüzden bir müşteriyi veya vergi kuralını düzenlemelisiniz.
Marius

Bu adil bir nokta; ve TiEul'un yanıtı mantıklı. Karanlıkta bir bıçak alıyordum, özlediğim gibi görünüyor.
Brett
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.