संदर्भ के आधार पर सुरक्षित URL का उपयोग करना


9

मैं संदर्भ के आधार पर एक सुरक्षित URL जनरेट करने के लिए विभिन्न तरीकों के उपयोग से परिचित हूं, अर्थात:

$this->getUrl('my-page', array('_forced_secure' => $this->getRequest()->isSecure()));

यह उन लिंक के निर्माण के लिए बहुत अच्छा काम करता है जो सुरक्षित मोड में होने पर एक सुरक्षित पृष्ठ पर निर्देशित होंगे (या बस सुरक्षित मोड का उपयोग न करने पर गैर-सुरक्षित पृष्ठ से लिंक होगा)।

मैगेंटो जिस समस्या को देख रहा हूं वह केवल कुछ विशेष पृष्ठों को सुरक्षित करने की आवश्यकता के रूप में व्यवहार करती है (ग्राहक खाता, चेकआउट, आदि)। अगर मैगेंटो हमेशा एक सुरक्षित लिंक का उपयोग करना पसंद करता है, यदि उपयोगकर्ता वर्तमान में सुरक्षित मोड में है , या यदि उपयोगकर्ता गैर-सुरक्षित मोड में है तो गैर-सुरक्षित लिंक का उपयोग करें।

मैं जो बता सकता हूं, उससे मेरे असली विकल्प हैं:

  1. $this->getUrl()ऊपर दिए गए स्निपेट के समान होने के हर उदाहरण को संशोधित करें ।
  2. base_urlHTTPS का उपयोग करने के लिए गैर-सुरक्षित सेट करें , सभी पृष्ठों को सुरक्षित करने के लिए मजबूर करें।

क्या एक बेहतर तरीका है जिसमें $this->getUrl()उपयोगकर्ता के संदर्भ की परवाह किए बिना हर कॉल को एचटीटीपीएस में हर कॉल को बदलने या मजबूर करने में शामिल नहीं होगा ?

- संपादित करें -

मुझे पता है कि मैं /app/code/core/Mage/Core/Model/Url.php->setRouteParams()विधि को संशोधित कर सकता हूं , हालांकि मुझे उम्मीद है कि एक क्लीनर तरीका है।

जवाबों:


5

Magento होने से हमेशा उस प्रोटोकॉल का मिलान होता है, जिस पर वर्तमान में उपयोगकर्ता समस्याएँ उत्पन्न करता है, जैसे कि साइट के होम पेज जैसे गैर-सुरक्षित URL पर सुरक्षित लॉगिन पेज को ग्राहक लॉगिन पृष्ठ पर नहीं छोड़ना।

मैं जो करने का सुझाव दूंगा वह अतिरिक्त कॉन्फ़िगरेशन को सुरक्षित करने के लिए आवश्यक अतिरिक्त मार्गों को घोषित करने के लिए एक कस्टम मॉड्यूल के कॉन्फ़िगरेशन फ़ाइल में कुछ कॉन्फ़िगरेशन XML जोड़ रहा है। आप इसे अपने config.xml फ़ाइल में रखकर कर रहे हैं ( module_or_route_idकुछ अद्वितीय के साथ प्रतिस्थापित :

<config>
    <frontend>
        <secure_url>
            <module_or_route_id>/route/</module_or_route_id>
        </secure_url>
    </frontend>
</config>

यदि आप Mage_Customer मॉड्यूल के लिए config.xml पर एक नज़र डालते हैं तो आपको इसका एक उदाहरण दिखाई देगा जहाँ पथ "/ ग्राहक /" को सुरक्षित के रूप में परिभाषित किया गया है।

नोट: यदि module_or_route_idउपरोक्त उदाहरण का भाग अद्वितीय नहीं है, तो केवल एक परिभाषा का उपयोग किया जाएगा, जिससे कुछ ठीक से सुरक्षित न हो। सुनिश्चित करें कि नोड नाम अद्वितीय है। :)

क्योंकि यह पथ आधारित है, हालांकि, मुझे यकीन नहीं है कि यह सीधे व्यक्तिगत CMS सामग्री पृष्ठों के URL पर कैसे लागू होगा, उदाहरण के लिए, क्योंकि वे सभी अभी भी एक मार्ग / पथ साझा करेंगे क्योंकि यह एक फिर से लिखना है जो उन सभी को उसी CMS पर भेजता है नियंत्रक।

यदि आपको वास्तव में HTTPS चलाने के लिए पूरी साइट की आवश्यकता है, तो आपको सुरक्षित और गैर-सुरक्षित दोनों URL सेटिंग्स के लिए https: // URL का उपयोग करना होगा।


मैं हर संभव दृश्य मार्ग (विशेषकर 'दृश्य-रहित' मार्ग जैसे कैटलॉग खोज / अजाक्स / सुझाव, आदि) के लिए मुख्य URL मॉडल को जोड़ने की बजाय केवल मुख्य सुरक्षित मॉडल को संशोधित करना पसंद करूंगा। हाँ यह एक मुख्य बदलाव है, लेकिन यह कोड की एक अतिरिक्त तीन पंक्तियाँ है। ऐसी स्थिति में जहां यह सिर्फ कुछ मार्गों को बदलना चाहता है, आपका सुझाव बहुत अधिक मायने रखता है।
pspahn

अतीत में हमने Mage_Core_Model_Store::getBaseUrlफेसबुक टैब में एम्बेडेड होने पर अपने स्टोर को हमेशा सुरक्षित बनाने के लिए संशोधित किया है। हालांकि, इस पर विचार करने के लिए अन्य चीजें हैं, जैसे कि ब्लॉक हिट जो भी पहले हिट करता है (आपको कैश कुंजी में कुछ जोड़ना होगा)। आपके पास या तो डेविड का कहना है कि, लॉगिन / चेकआउट के लिए गैर-सुरक्षित लिंक, या अंततः आपकी साइट का प्रत्येक ग्राहक सुरक्षित मोड में अच्छी तरह से समाप्त हो जाएगा यदि वे कभी भी लॉगआउट करते हैं या चेकआउट मारते हैं।
पीटर ओ'कैलाघन

1
@pspahn क्या आपने माना है कि /catalogsearch/मार्ग को सुरक्षित बनाने के लिए कुछ भी मिलान शामिल होना चाहिए /catalogsearch/*/*/? यानी सब कुछ catalogsearchसुरक्षित बनाने के लिए केवल एक नियम लगेगा ।
डेविडलगर

@ कैग ने कुछ ऐसा बताया, जिसमें मैं अपने उत्तर को शामिल करने से चूक गया था, और यह कैश कीज़ के बारे में नोट है ... यदि URL लगातार एक या दूसरे नहीं हैं, तो आपने परिणामस्वरूप लिंक को गड़बड़ करने वाले ब्लॉक को कैश किया होगा।
डेविडलगर

कैश कीज के बारे में यह एक अच्छी बात है। जाने के लिए सबसे अच्छा तरीका लगता है कि बस सब कुछ HTTPS चलाना होगा।
pspahn

2

अपनी app/etc/config.xmlफ़ाइल में निम्नलिखित सेट करें :

<?xml version="1.0"?>
<config>
  <frontend>
    <secure_url>
      <all>/</all>
    </secure_url>
  </frontend>
</config>

यह Magento 1.9.1 में काम करता है

अगर उपयोगकर्ता https का उपयोग कर रहा है, तो उसे सभी url को फिर से https के लिए लिखना चाहिए।


इससे भी बेहतर: config.xml का उपयोग न करें, लेकिन local.xml
माइकल

1

सिस्टम में एक समझदार लेकिन महत्वपूर्ण विकल्प है विन्यास | वेब ~ जहां आपको "फ्रंट में सिक्योर url का उपयोग करें" कहना है - यदि आप इसे हां में सेट करते हैं तो https द्वारा लोड किया गया एक पेज https लिंक होगा,

ज्यादातर मामलों में कोड लिखने या अतिरिक्त कॉन्फ़िगरेशन प्रदान करने की आवश्यकता नहीं है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.