วิธีทำ https URL เป็น http


11

ฉันสงสัยว่าวีโอไอพีเป็นตัวกำหนดหน้าเว็บใดควรจะปลอดภัยและหน้าไหนควรไม่ปลอดภัย

จากสิ่งที่ฉันเข้าใจวีโอไอพีจะทำให้หน้าเช็คเอาต์ & ล็อกอินมีความปลอดภัยเป็นค่าเริ่มต้น & ฉันสามารถทำให้หน้าอื่น ๆ ปลอดภัยด้วยการระบุไว้ในเส้นทางการกำหนดค่าfrontend/secure_url/....ผ่านโมดูล config.xml ของโมดูลของฉัน

การกำหนดค่าด้านผู้ดูแลดูเหมือนจะไม่เป็นไร เปิดใช้งาน SSL ทั้งในส่วนหน้าและส่วนหลัง แบ็กเอนด์เต็มเกิน https ในส่วนหน้าหน้าส่วนใหญ่ทำงานได้ดีภายใต้ http รวมถึงหน้าแรก & หน้าเช็คเอาต์ & เข้าสู่ระบบจะถูกเปลี่ยนเส้นทางไปยัง https ตามที่คาดไว้

แต่มีอีกไม่กี่ URL ที่ได้รับการเปลี่ยนเส้นทางไปยัง https ที่ฉันคาดว่าจะยังคงอยู่บน http รวมถึงตัวควบคุม / การกระทำของโมดูลที่กำหนดเอง

ฉันต้องการตัวชี้บางอย่างเกี่ยวกับวิธีการแก้ปัญหานี้? มีการกำหนดค่าอื่น ๆ ที่ฉันสามารถใช้เพื่อหยุดไม่ให้ถูกเปลี่ยนเส้นทางหรือไม่?


คุณสามารถให้ตัวอย่าง / รหัส (เช่นการกำหนดค่า XML ของโมดูลที่กำหนดเอง) ได้ไหม นอกจากนี้ฉันจะไม่พูดถึง "แก้จุดบกพร่อง" เมื่อคุณพยายามเปลี่ยนเส้นทาง https: // ไปยัง http: //;)
simonthesorcerer

คำตอบ:


3

มีฟังก์ชั่นเพียงแค่การที่เรียกว่าเป็นshouldUrlBeSecureที่ตั้งอยู่ในบนเส้นapp/code/core/Mage/Core/Model/Config.php1477

นี่คือฟังก์ชั่นที่สมบูรณ์:

/**
 * Check whether given path should be secure according to configuration security requirements for URL
 * "Secure" should not be confused with https protocol, it is about web/secure/*_url settings usage only
 *
 * @param string $url
 * @return bool
 */
public function shouldUrlBeSecure($url)
{
    if (!Mage::getStoreConfigFlag(Mage_Core_Model_Store::XML_PATH_SECURE_IN_FRONTEND)) {
        return false;
    }

    if (!isset($this->_secureUrlCache[$url])) {
        $this->_secureUrlCache[$url] = false;
        $secureUrls = $this->getNode('frontend/secure_url');
        foreach ($secureUrls->children() as $match) {
            if (strpos($url, (string)$match) === 0) {
                $this->_secureUrlCache[$url] = true;
                break;
            }
        }
    }

    return $this->_secureUrlCache[$url];
}

หากต้องการดูว่า URL ใดควรมีความปลอดภัยคุณสามารถเพิ่มคำสั่งง่ายๆMage::log($secureUrls)ในifคำสั่งได้ นี่คือลักษณะการบันทึกของฉัน:

2014-02-12T11:55:26+00:00 DEBUG (7): Mage_Core_Model_Config_Element Object
(
    [install] => /install/wizard/checkSecureHost
    [customer] => /customer/
    [sales] => /sales/
    [authorizenet_paygate] => /paygate/authorizenet_payment
    [checkout_onepage] => /checkout/onepage
    [checkout_multishipping] => /checkout/multishipping
    [paypal_express] => /paypal/express
    [paypal_standard] => /paypal/standard
    [paypal_express_callbackshippingoptions] => paypal/express/callbackshippingoptions
    [googlecheckout_redirect] => /googlecheckout/redirect/
    [googlecheckout_beacon] => /googlecheckout/api/beacon/
    [googlecheckout_api] => /googlecheckout/api/
    [review_customer] => /review/customer/
    [tag_customer] => /tag/customer/
    [wishlist] => /wishlist/
    [paypaluk_express] => /paypaluk/express
    [rss_catalog_review] => /rss/catalog/review
    [rss_order_new] => /rss/order/new
    [rss_catalog_notifystock] => /rss/catalog/notifystock
    [centinel] => /centinel/
    [newsletter_manage] => /newsletter/manage/
    [downloadable] => /downloadable/customer/
    [downloadable_download] => /downloadable/download/
    [ogone_api] => /ogone/api
    [persistent_onepage_register] => /persistent/index/saveMethod
    [checkout_cart] => /checkout/cart
    [storecredit_info] => /storecredit/info/
    [giftcard_customer] => /giftcard/customer/
    [enterprise_pbridge_pbridge] => /enterprise_pbridge/pbridge/
    [invitation] => /invitation/
)

ทีนี้ลองคิดดูว่า Magento เปลี่ยนHTTPไปใช้HTTPS ฉันคิดว่าคุณน่าจะดำดิ่งลงสู่ Zend framework libภายในlib/Zend/Http/*เพราะมันมีไฟล์ที่น่าสนใจที่สุด หวังว่านี่จะช่วยได้ โชคดี!


3

ถ้าคุณต้องการที่จะใช้สำหรับsecure url สำหรับany other modulesแล้วคุณจะต้องมีการเปลี่ยนแปลงบางอย่างใน config.xmlโมดูลว่า .. ครั้งแรกสำหรับส่วนหน้าใช้แท็ก

<secure_url>
            <productfaq>/productfaq</productfaq>
        </secure_url>

และถ้าคุณสำหรับ URL productfaq แล้วเปลี่ยน $this->getUrl('productfaq/index/index', array('_secure'=>true));

เส้นทางส่วนขยายของฉัน \app\code\local\Amit\Productfaq\etc.

ใน config.xml จำเป็นต้องเปลี่ยนด้านล่าง

     <frontend>
            <routers>
                <productfaq>
                    <use>standard</use>
                    <args>
                        <module>Amit_Productfaq</module>
                        <frontName>onestepcheckout</frontName>
                    </args>
                </productfaq>
            </routers>
            <layout>
                <updates>
                    <productfaq>
                        <file>productfaq.xml</file>
                    </productfaq>
                </updates>
            </layout>
        <!-- add secure url for extesnion, for that  
url productfaq automatically appnend https:  -->
             <secure_url>
                <productfaq>/productfaq</productfaq>
            </secure_url>
        </frontend>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.