DEBUG (7): ปัญหาด้านความปลอดภัย: block_name ไม่ได้อยู่ในรายการที่อนุญาต (ระบบ Magento.log)


22

ในsystem.logไฟล์ Magento ของฉันติดตั้งฉันมีข้อความแสดงข้อผิดพลาดดังต่อไปนี้

DEBUG (7): ปัญหาด้านความปลอดภัย: block_nameไม่ได้อยู่ในรายการที่อนุญาต

ที่block_nameเป็นชื่อของบล็อกที่ใช้ในการจัดเก็บของฉัน

มันหมายถึงอะไรและฉันจะแก้ไขได้อย่างไร

คำตอบ:


28

ข้อความนี้หมายความว่าหนึ่งในบล็อคที่ใช้ในร้านวีโอไอพีของคุณไม่ได้อยู่ในรายชื่อที่อนุญาต

ด้วยโปรแกรมเสริมความปลอดภัย SUPEE-6788และMagento CE 1.9.2.2มีการเพิ่มบัญชีขาวสำหรับบล็อก Magento ตอนนี้มีรายการบล็อกหรือคำสั่งที่อนุญาต หากโมดูลหรือส่วนขยายใช้ตัวแปรเช่น{{config path=”web/unsecure/base_url”}}และ{{block type=rss/order_new}}ในหน้า CMS หรืออีเมลและคำสั่งไม่ได้อยู่ในรายการนี้คุณจะต้องเพิ่มลงในฐานข้อมูลของคุณ หากบล็อกไม่ได้อยู่ในรายการที่อนุญาตจะไม่มีการแสดงผล

ความผิดพลาด

ในฐานะของSecurity Patch SUPEE-7405และMagento CE 1.9.2.3มีคุณสมบัติหลักใหม่ที่จะระบุบล็อกที่หายไปจากรายการที่อนุญาตสำหรับคุณได้อย่างง่ายดาย blockDirective($construction)ฟังก์ชั่นใน

app/code/core/Mage/Core/Model/Email/Template/Filter.php

ได้รับการอัปเดตและตอนนี้ดูเหมือนว่านี้:

/**
 * Retrieve Block html directive
 *
 * @param array $construction
 * @return string
 */
public function blockDirective($construction)
{
    $skipParams = array('type', 'id', 'output');
    $blockParameters = $this->_getIncludeParameters($construction[2]);
    $layout = Mage::app()->getLayout();
    $block = null;

    if (isset($blockParameters['type'])) {
        if ($this->_permissionBlock->isTypeAllowed($blockParameters['type'])) {
            $type = $blockParameters['type'];
            $block = $layout->createBlock($type, null, $blockParameters);
        } else {
            Mage::log('Security problem: ' . $blockParameters['type'] . ' has not been whitelisted.');
        }
    } elseif (isset($blockParameters['id'])) {
        $block = $layout->createBlock('cms/block');
        if ($block) {
            $block->setBlockId($blockParameters['id']);
        }
    }

    if ($block) {
        $block->setBlockParams($blockParameters);
        foreach ($blockParameters as $k => $v) {
            if (in_array($k, $skipParams)) {
                continue;
            }
            $block->setDataUsingMethod($k, $v);
        }
    } else {
        return '';
    }

    if (isset($blockParameters['output'])) {
        $method = $blockParameters['output'];
    }
    if (!isset($method) || !is_string($method) || !method_exists($block, $method)) {
        $method = 'toHtml';
    }
    return $block->$method();
}

สังเกตใหม่

Mage::log('Security problem: ' . $blockParameters['type'] . ' has not been whitelisted.');

หากบล็อกหายไปจากรายการที่อนุญาตระบบจะตรวจหาและพิมพ์ข้อผิดพลาดรวมถึงชื่อบล็อกที่ขาดหายไปในsystem.logไฟล์ที่อยู่ใน

[your magento install dir]/var/log/

แน่นอนคุณต้องเปิดใช้งานการบันทึกเพื่อรับข้อความนี้ นี่เป็นข้อผิดพลาดที่คุณจะเห็น

DEBUG (7): ปัญหาด้านความปลอดภัย: block_nameไม่ได้อยู่ในรายการที่อนุญาต

วิธีแก้ไข

ในการแก้ไขปัญหานี้คุณจะต้องเพิ่มชื่อบล็อกที่หายไปไปยังรายการที่อนุญาตด้วยตนเอง เพิ่มเฉพาะบล็อกที่คุณไว้วางใจ หากคุณไม่ทราบว่าบล็อกมาจากไหนให้ค้นหาสิ่งนี้ก่อน เมื่อคุณแน่ใจว่าต้องการเพิ่มบล็อคที่หายไปจากนั้นใน Magento Admin Panel ของคุณไปที่

System > Permissions > Blocks

และคลิกที่Add New Blockปุ่ม จากที่นี่คุณสามารถเพิ่มบล็อกที่หายไปในรายการที่อนุญาต เพียงป้อนข้อความblock_nameที่ปรากฏในข้อความแสดงข้อผิดพลาดของคุณในBlock Name *ฟิลด์ตั้งค่าIs Allowedเป็น "ใช่" แล้วกดSave Blockปุ่ม

อย่าลืมล้างแคช ขณะนี้บล็อกที่หายไปของคุณได้รับอนุญาตและควรหายไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.