APPSEC-1057 सफेद सूची तालिकाओं में चर या ब्लॉक कैसे जोड़ें


45

APPSEC-1057 (SUPEE-6788 का हिस्सा) बताता है

Magento में अब अनुमत ब्लॉकों या निर्देशों का श्वेतसूची शामिल है। यदि कोई मॉड्यूल या कोई भी सीएमएस पृष्ठ या ईमेल में {{config path=”web/unsecure/base_url”}}और जैसे चर का उपयोग करता है {{block type=rss/order_new}}, और निर्देश इस सूची में नहीं हैं, तो आपको उन्हें अपने डेटाबेस की स्थापना स्क्रिप्ट के साथ जोड़ना होगा।

एक्सटेंशन या कस्टम कोड जो सामग्री को संभालता है (जैसे ब्लॉग एक्सटेंशन) प्रभावित हो सकता है। यदि आपका कोड कुछ कॉन्फ़िगरेशन चर या ब्लॉक का उपयोग करता है, तो आपको एक डेटा अपडेट स्क्रिप्ट बनाने की आवश्यकता होती है, जो सफेद सूची तालिकाओं में चर या ब्लॉक जोड़ता है:

आप श्वेतसूची वाले कस्टम चर और ब्लॉक कैसे बनाते हैं?

जवाबों:


38

संपूर्णता की खातिर, आप सिस्टम> अनुमतियाँ> वैरिए और सिस्टम> अनुमतियाँ> ब्लॉक के तहत सफेद सूचियों में मैन्युअल रूप से ब्लॉक और चर जोड़ सकते हैं । आपके द्वारा जोड़े गए कोड फॉर्म web/unsecure/base_url(कॉन्फिग पाथ) या rss/order_new(ब्लॉक क्लास उर्फ) में हैं।

मूल उत्तर

मेरी अपग्रेड स्क्रिप्ट इस तरह दिखती है:

/*
 * Make sure the upgrade is not performed on installations without the tables
 * (i.e. unpatched shops).
 */
$adminVersion = Mage::getConfig()->getModuleConfig('Mage_Admin')->version;
if (version_compare($adminVersion, '1.6.1.2', '>=')) {

    $blockNames = array(
        'cms/block',
        'catalog/product_list',
        'germany/impressum',
        'page/html',
        'magesetup/imprint_field',
        'magesetup/imprint_content'
    );
    foreach ($blockNames as $blockName) {
        $whitelistBlock = Mage::getModel('admin/block')->load($blockName, 'block_name');
        $whitelistBlock->setData('block_name', $blockName);
        $whitelistBlock->setData('is_allowed', 1);
        $whitelistBlock->save();
    }

    $variableNames = array(
        'design/email/logo_alt',
        'design/email/logo_width',
        'design/email/logo_height',
    );

    foreach ($variableNames as $variableName) {
        $whitelistVar = Mage::getModel('admin/variable')->load($variableName, 'variable_name');
        $whitelistVar->setData('variable_name', $variableName);
        $whitelistVar->setData('is_allowed', 1);
        $whitelistVar->save();
    }
}

बदलें $blockNamesऔर $variableNamesअपने खुद के साथ। निम्नलिखित उपकरण उपयोग किए गए चर और ब्लॉकों को खोजने में मदद करता है: https://github.com/peterjaap/magerun-addons

चर / ब्लॉक लोड हो रहे हैं, पहले यह सुनिश्चित करें कि आप डुप्लिकेट सम्मिलित करने का प्रयास न करें (यह स्क्रिप्ट को क्रैश करेगा)। यह मेरे साथ हुआ क्योंकि स्क्रिप्ट ने मुझे चर "ट्रांस_मैल / आईडेंटीफाइनल / ईमेल" और "ट्रांस_मैल / आइडेंटिफाई / ईमेल" दिखाया जो पहले से ही अंतिम पैच रिलीज में श्वेत हैं।

अपग्रेड स्क्रिप्ट का उपयोग कैसे करें

इसे कस्टम मॉड्यूल में रखें क्योंकि डेटा अपग्रेड स्क्रिप्ट (सामान्य अपग्रेड स्क्रिप्ट के बाद डेटा अपग्रेड स्क्रिप्ट चलती हैं, यह सुनिश्चित करता है कि टेबल पहले से मौजूद हैं)। यदि आपके पास अभी तक कोई मॉड्यूल नहीं है जो आप कॉन्फ़िगर अपडेट के लिए उपयोग करते हैं, तो इसे इस तरह बनाएं:

एप्लिकेशन / etc / मॉड्यूल / Project_Config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Project_Config>
            <active>true</active>
            <codePool>local</codePool>
        </Project_Config>
    </modules>
</config>

एप्लिकेशन / कोड / स्थानीय / परियोजना / कॉन्फ़िग / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Project_Config>
            <version>0.1.0</version>
        </Project_Config>
    </modules>
    <global>
        <resources>
            <project_config>
                <setup>
                    <module>Project_Config</module>
                    <class>Mage_Core_Model_Resource_Setup</class>
                </setup>
            </project_config>
        </resources>
    </global>
</config>

एप्लिकेशन / कोड / स्थानीय / परियोजना / config / डेटा / project_config / डेटा: स्थापित-0.1.0.php

(ऊपरोक्त अनुसार)


1
इसने मेरे कस्टम ब्लॉक के लिए अच्छा काम किया। मुझे पूरी तरह से समझ में नहीं आता है कि चर श्वेतसूची कैसे काम करती है। मेरे मौजूदा कस्टम मॉड्यूल में चर वाइटलिस्ट में दिखाई नहीं देते हैं, लेकिन काम कर रहे हैं।
पज

1
ब्लॉक दिखाते हैं, लेकिन db नहीं बदला है। विचित्र
क्लॉडिउ क्रिग्ना

चरों के संबंध में उपरोक्त अपनी टिप्पणी को स्पष्ट करने के लिए, क्या हम सीएम या लोकेल फ़ाइलों में ईमेल किए गए व्हाइटवैलिंग वेरिएबल्स के बारे में बात कर रहे हैं अर्थात ईमेल का उपयोग {config पथ = और कस्टम मॉड्यूल वैरिएबल जो PHP में Mage :: getStoreConfig ('my_var') के साथ उपयोग नहीं कर रहे हैं? अब तक उपकरण में ऐसे ब्लॉक पाए गए हैं जो श्वेत नहीं हैं, लेकिन कोई चर नहीं।
पेज

केवल {{config}}निदेशकों को श्वेतसूची की आवश्यकता है। कोड परियोजनाओं के लिए है, न कि एक्सटेंशन के लिए, इसलिए मैं एक पैच की गई दुकान मानता हूं, लेकिन एक्सटेंशन को Magento संस्करण की जांच करनी चाहिए (या बेहतर है, जांचें कि क्या टेबल मौजूद हैं)
Fabian Schmengler


16

आप उन्हें Magento बैकेंड में सिस्टम> अनुमतियाँ> चर और प्रणाली> अनुमतियाँ> ब्लॉक के माध्यम से जोड़ सकते हैं जब Magento 1.9.2.2 स्थापित हो जाता है।

ब्लॉक के कस्टम चर का उपयोग करने वाले प्लगइन्स को कोड के साथ डेटा अपग्रेड स्क्रिप्ट जोड़ने की आवश्यकता होगी जैसा कि नीचे दिखाया गया है।

if (Mage::getModel('admin/block')) {

    $installer = $this;
    $installer->startSetup();
    $connection = $installer->getConnection();

    $installer->getConnection()->insertMultiple(
        $installer->getTable('admin/permission_block'),
        array(
            array('block_name' => 'flexslider/view', 'is_allowed' => 1),
        )
    );

    $installer->endSetup();

}

1
यह केवल सामुदायिक संस्करण के लिए काम करेगा, मैं सीई और ईई पर चेक जोड़ूंगा: अगर ((Mage :: getEdition () == Mage :: EDITION_COMMUNITY && संस्करण_compare (Mage :: getVersion)), '1.9.2.2', ' > = '))) || (Mage :: getEdition () == Mage :: EDITION_ENTERPRISE && संस्करण_compare (Mage :: getVersion) (),' 1.14.2.2 ','> = ')}
व्लादिमीर केर्खॉफ

1
जैसा कि @DmitryFurs ने कहा है कि यदि आपका फ़ीचर तालिकाओं या कॉन्फ़िगरेशन फ़ील्ड्स की मौजूदगी को देखते हुए बेहतर है तो चेक करें, लेकिन वर्जन पर नहीं
एंटोन एस

अच्छी बात है व्लादिमीर और एंटोन। मैंने इसका उपयोग करने की कोशिश की अगर ($ इंस्टॉलर-> getConnection () -> isTableExists ($ इंस्टॉलर-> getTable ('admin / अनुमति_ब्लॉक'))) ... ...} लेकिन इसका परिणाम त्रुटि है। अगर तालिका मौजूद है और यह नहीं करता है तो कुछ भी कैसे करें, इस पर कोई विचार करें?
सोलाइड

मैंने अपना उत्तर अपडेट कर दिया है, यदि आप (Mage :: getModel ('admin / block')) {...}
Solide

5

आप पा सकते हैं कि SUPEE-6788पैच लगाए जाने के बाद नए टेबल हैं

permission_variable

permission_block

और आप इन श्वेतसूची तालिकाओं में कुछ कॉन्फ़िगरेशन चर या ब्लॉक जोड़ सकते हैं।

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