व्यवस्थापक नियंत्रकों में सार्वजनिक क्रियाएं


12

मुझे पता चला है कि कक्षा में \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 मॉड्यूल में कब / क्या अनुमति देना चाहिए?

जवाबों:


4

मैंने इस मामले पर कभी भी एक Magento के इंजीनियर का आधिकारिक उत्तर नहीं देखा है, लेकिन मेरे लिए यह हमेशा प्रकट हुआ कि इस सुविधा का उपयोग तब किया जाता है जब आप चाहते हैं कि उपयोगकर्ता सुरक्षित सत्र के बाहर से किसी पृष्ठ से लिंक कर सकें, अन्यथा एक लिंक जो एक सुरक्षित व्यवस्थापक URL को संदर्भित करता है, केवल आपको लॉग इन करने के लिए संकेत देने के बाद आपको डैशबोर्ड पर पुनर्निर्देशित करेगा।

मेरे मन में हमेशा दो परिदृश्य थे: या तो आप चाहते हैं कि उपयोगकर्ता अन्य उपयोगकर्ताओं के साथ कुछ व्यवस्थापक पृष्ठ साझा करने में सक्षम हों या आप चाहते हैं कि कुछ सार्वजनिक पृष्ठ मैगेंटो बैक-एंड में आपके कस्टम URL का संदर्भ दें (जो अन्यथा केवल डैशबोर्ड पर रीडायरेक्ट होगा) ।

जब आप Magento कोर को देखते हैं तो आप देख सकते हैं कि Magento ने समीक्षा, आदेश और उत्पाद पृष्ठों के लिए इसे अनिवार्य रूप से लागू कर दिया है। मुझे लगता है कि Magento के इंजीनियरों ने ऐसा इसलिए किया कि एक स्टोर के व्यवस्थापक उपयोगकर्ता किसी संदेशवाहक या ईमेल के माध्यम से सीधे लिंक भेजने में सक्षम हैं (जैसा कि "अरे, इस आदेश की जांच करें: [url] ")। मैंने एक बार इस तरह की सुविधा को एक पेज के लिए लागू किया था जब मैं चाहता था कि इसे आसानी से व्यवस्थापक उपयोगकर्ताओं द्वारा उपयोग किया जा सके।

आप मूल रूप से अपने व्यवस्थापक बैक-एंड में एक पृष्ठ से सीधे लिंक करने में सक्षम होने की स्वतंत्रता के लिए एक सीएसआरएफ हमले के बढ़े हुए जोखिम का व्यापार कर रहे हैं, जिसे केवल तब किया जाना चाहिए जब आपके पास कुछ निश्चित उपयोग-मामला हो। मुझे लगता है कि सीएमएस पेज मैगेंटो कोर टीम के लिए उपयोग के मामले में नहीं आते थे क्योंकि उन्हें लगता था कि ग्राहकों की सहायता और उत्पादों के संपादन से संबंधित कार्यों के लिए यह "सुविधा" सीमित है - मूल रूप से कई में ग्राहक सेवा प्रतिनिधियों के लिए सबसे आम कार्य भंडार।


यह समझ में आता है। +1 यदि मैं अगले 24 घंटों में टीम के किसी सदस्य से आधिकारिक उत्तर (इससे अलग) नहीं सुनता, तो चेकमार्क आपका है।
मेरियस

0

अगर मुझे अनुमान लगाना था, तो मैं कहूंगा कि गुप्त कुंजी को CSRF और / या XSS संरक्षण के एक भाग के रूप में Magento में बनाया गया है। इसलिए उन पृष्ठों के लिए जो उपयोगकर्ता-इनपुट के आधार पर अपनी सामग्री को संशोधित नहीं करते हैं, वहां गुप्त कुंजी रखना आवश्यक नहीं हो सकता है।

एक और तरीका कहा, केवल उपयोगकर्ता-आपूर्ति डेटा / इनपुट प्राप्त करने वाले कार्यों को एक गुप्त कुंजी के साथ संरक्षित किया जाता है। केवल अनुमान है।


यदि यह सच था, तो एक सीएमएस पृष्ठ का संपादन "सार्वजनिक" भी होना चाहिए। तो एक ग्राहक या एक कर नियम का संपादन करना चाहिए।
मेरियस

यह एक उचित बिंदु है; और TiEul की प्रतिक्रिया का कोई मतलब नहीं है। मैं अंधेरे में एक छुरा था, लगता है जैसे मैं चूक गया।
ब्रेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.