APPSEC-1057 কীভাবে সাদা তালিকার টেবিলগুলিতে ভেরিয়েবল বা ব্লক যুক্ত করা যায়


45

APPSEC-1057 (SUPEE-6788 এর অংশ) রাজ্যসমূহ

ম্যাজেন্টোতে এখন অনুমোদিত ব্লক বা নির্দেশাবলীর একটি শ্বেত তালিকা রয়েছে। যদি কোনও মডিউল বা যে কেউ সিএমএস পৃষ্ঠাগুলি বা ইমেলের মতো {{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

প্রথমে ভেরিয়েবল / ব্লক লোড করা নিশ্চিত করে যে আপনি সদৃশ সন্নিবেশ করার চেষ্টা করবেন না (এটি স্ক্রিপ্টটি ক্র্যাশ করবে)। আমার সাথে এটি ঘটেছিল কারণ স্ক্রিপ্টটি আমাকে "ট্রান্স_ইমেল / পরিচয়_জেনারাল / ইমেল" এবং "ট্রান্স_ইমেল / পরিচয়_সমর্থন / ইমেল" ভেরিয়েবলগুলি দেখিয়েছিল যা ইতিমধ্যে চূড়ান্ত প্যাচ রিলিজে সাদা তালিকাভুক্ত।

কীভাবে আপগ্রেড স্ক্রিপ্ট ব্যবহার করবেন

এটিকে ডেটা আপগ্রেড স্ক্রিপ্ট হিসাবে কাস্টম মডিউলে রাখুন (ডেটা আপগ্রেড স্ক্রিপ্টগুলি সাধারণ আপগ্রেড স্ক্রিপ্টের পরে চালানো হয়, এটি নিশ্চিত করে যে টেবিলগুলি ইতিমধ্যে বিদ্যমান রয়েছে)। আপনি যদি কনফিগার আপডেটের জন্য ব্যবহার করেন এমন মডিউল এখনও না থাকে তবে এটি এটি তৈরি করুন:

অ্যাপ্লিকেশন / ইত্যাদি / মডিউল / 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>

অ্যাপ্লিকেশন / কোড / স্থানীয় / প্রকল্প / কনফিগ / ডেটা / project_config / ডাটা ইনস্টল-0.1.0.php

(যেমন উপরে)


1
এটি আমার কাস্টম ব্লকগুলির জন্য ভাল কাজ করেছে। পরিবর্তনশীল শ্বেত তালিকা কীভাবে কাজ করে তা আমি পুরোপুরি বুঝতে পারি না। আমার বিদ্যমান কাস্টম মডিউলগুলির ভেরিয়েবলগুলি শ্বেতলিস্টে উপস্থিত হয় না, তবে তারা কাজ করছে।
paj

1
ব্লকগুলি দেখায়, তবে ডিবি পরিবর্তন করা হয়নি। অদ্ভুত
ক্লাদিউ ক্রাঙ্গা

ভেরিয়েবল সম্পর্কে কেবল আমার উপরের মন্তব্যটি পরিষ্কার করার জন্য, আমরা কি সিএম বা লোকেল ফাইলগুলিতে ডাকা শ্বেত তালিকাভুক্ত ভেরিয়েবল সম্পর্কে কথা বলছি ie কনফিগার পাথ = ব্যবহার করে ইমেল টেমপ্লেটগুলি এবং ম্যাগ :: getStoreConfig ('my_var') দিয়ে পিএইচপিতে অ্যাক্সেস প্রাপ্ত কাস্টম মডিউল ভেরিয়েবলগুলি নয়? এখনও অবধি সরঞ্জামগুলি এমন ব্লকগুলি খুঁজে পেয়েছে যা শ্বেত তালিকাভুক্ত নয়, তবে কোনও ভেরিয়েবল নেই।
paj

কেবল {{config}}নির্দেশাবলীর শ্বেত তালিকাভুক্ত করা দরকার। কোডটি প্রকল্পগুলির জন্য, এক্সটেনশনের জন্য নয়, তাই আমি একটি প্যাচড শপ গ্রহণ করি, তবে এক্সটেনশানগুলি ম্যাজেন্টো সংস্করণটি পরীক্ষা করা উচিত (বা আরও ভাল, টেবিলগুলি রয়েছে কিনা তা পরীক্ষা করা উচিত)
ফ্যাবিয়ান শেমংলার

3
একটি সুন্দর চেক দিয়ে আবার আপডেট হয়েছে @ mam08ixo gist.github.com/mam08ixo/3937df764da7a6816a1d
ফ্যাবিয়ান শেমংলার

16

আপনি সেগুলি ম্যাগেন্টো 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 && version_compare (Mage :: getVersion (), '1.9.2.2', ' > = ')) || (Mage :: getEdition () == Mage :: EDITION_ENTERPRISE && version_compare (Mage :: getVersion (),' 1.14.2.2 ','> = ')) {
ভ্লাদিমির কেরখফ

1
যেমন @ ডিমিট্রিফার্স জানিয়েছেন সেখানে বৈশিষ্ট্যটি টেবিলগুলি পরীক্ষা করে বা কনফিগারেশনের ক্ষেত্রগুলির উপস্থিতি উপস্থিত রয়েছে তবে সংস্করণে নেই
আন্তন এস

গুড পয়েন্ট ভ্লাদিমির এবং আন্তন। আমি এটি ব্যবহার করার চেষ্টা করেছি ($ ইনস্টলার-> getConnication () -> isTableExists ($ ইনস্টলার-> getTable ('অ্যাডমিন / অনুমতি_ ব্লক'))) {...} তবে এটির একটি ত্রুটির ফলস্বরূপ। টেবিলের উপস্থিতি আছে কি না এবং কীভাবে কিছু করা যায় না সে সম্পর্কে কীভাবে ধারণা করা যায়?
Solide

আমি আমার উত্তরটি আপডেট করেছি, আপনি যদি ব্যবহার করতে পারেন (ম্যাজ :: গেটমোডেল ('অ্যাডমিন / ব্লক')) {...}
সলিউড

5

SUPEE-6788প্যাচ ইনস্টল হওয়ার পরে আপনি নতুন টেবিলগুলি দেখতে পাবেন

permission_variable

permission_block

এবং আপনি এই হোয়াইটলিস্ট টেবিলগুলিতে কিছু কনফিগার ভেরিয়েবল বা ব্লক যুক্ত করতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.