管理コントローラーでのパブリックアクション


11

クラス\Magento\Backend\App\AbstractAction(すべての管理コントローラーアクションの祖先)に、次の_publicActionsような秘密キーの検証に使用されるというメンバーがあることを発見しました。

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

つまり、特定のアクション名がリストされている_publicActions場合、URLに秘密鍵がなくてもアクションにアクセスできます。
これは、開発とデバッグの祝福です。ROOT/admin/module/controller/action秘密の管理キーを知らなくても、手動で行うことができるためです。しかし、理解できないのは、秘密のキーなしで製品編集ページにアクセスできる理由です。
このような製品編集ページを呼び出すだけROOT/admin/catalog/product/edit/id/{product_id_here}です。

publicActions部材が製品に(編集用)とリダイレクトするためのリダイレクトコントローラに、(インデックスおよびビューを可能にする)注文に対して上書きされます。

さて、私の質問:
秘密キーなしで許可されるのは一部の編集アクションのみであり、秘密キーなしでカスタムCRUDモジュールでいつ/何を許可する必要があるのですか?

回答:


3

私はMagentoエンジニアからの正式な回答を見たことがありませんが、私には、この機能は、ユーザーがセキュリティで保護されたセッションの外部からページにリンクできるようにする場合に使用されるように見えました。安全な管理URLを参照するリンクは、ログインを要求した後にのみダッシュボードにリダイレクトします。

私は常に2つのシナリオを念頭に置いていました。ユーザーが特定の管理ページを他のユーザーと共有できるようにするか、パブリックページがMagentoバックエンドでカスタムURLを参照できるようにするか(そうでない場合はダッシュボードにリダイレクトされるだけです)。 。

Magentoコアを見ると、Magentoがレビュー、注文、製品ページにこれを本質的に実装していることがわかります。Magentoのエンジニアがこれを行ったのは、ストアの管理者ユーザーがメッセンジャーまたはメールを介してリンクを直接送信できるようにするためです(「こんにちは、この順序を確認してください:[url]。」のように)。管理者ユーザーが簡単に共有できるようにしたいときに、このような機能をページに実装しました。

基本的に、CSRF攻撃のリスクの増大と、管理バックエンドのページに直接リンクできる自由とのトレードオフになります。これは、非常に特定のユースケースを想定している場合にのみ行う必要があります。CMSページはMagentoコアチームのユースケースに該当しなかったと思います。これは、この「機能」をカスタマーサポートと製品の編集に関連するアクションに制限しているように思われたためです-基本的に多くのカスタマーサービス担当者にとって最も一般的なタスク店舗。


意味あり。+1 24時間以内にチームメンバーから正式な回答(これとは異なる)が聞こえない場合、チェックマークはあなたのものです。
マリウス

0

推測してみると、秘密鍵がMagentoに組み込まれているCSRFやXSS保護の一部として使用されている可能性があるためだと思います。したがって、ユーザー入力に基づいてコンテンツを変更しないページの場合は、そこに秘密鍵を用意する必要がない場合があります。

別の言い方をすると、ユーザーが提供したデータ/入力を受け取るアクションのみが秘密鍵で保護されます。ただの推測です。


それが本当なら、CMSページの編集も「公開」する必要があります。したがって、顧客または税規則を編集する必要があります。
マリウス

それは公平な点です。そしてTiEulの反応は理にかなっています。暗闇の中で刺し傷を負いました、見逃したようです。
ブレット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.