ในsystem.log
ไฟล์ Magento ของฉันติดตั้งฉันมีข้อความแสดงข้อผิดพลาดดังต่อไปนี้
DEBUG (7): ปัญหาด้านความปลอดภัย:
block_name
ไม่ได้อยู่ในรายการที่อนุญาต
ที่block_name
เป็นชื่อของบล็อกที่ใช้ในการจัดเก็บของฉัน
มันหมายถึงอะไรและฉันจะแก้ไขได้อย่างไร
ในsystem.log
ไฟล์ Magento ของฉันติดตั้งฉันมีข้อความแสดงข้อผิดพลาดดังต่อไปนี้
DEBUG (7): ปัญหาด้านความปลอดภัย:
block_name
ไม่ได้อยู่ในรายการที่อนุญาต
ที่block_name
เป็นชื่อของบล็อกที่ใช้ในการจัดเก็บของฉัน
มันหมายถึงอะไรและฉันจะแก้ไขได้อย่างไร
คำตอบ:
ข้อความนี้หมายความว่าหนึ่งในบล็อคที่ใช้ในร้านวีโอไอพีของคุณไม่ได้อยู่ในรายชื่อที่อนุญาต
ด้วยโปรแกรมเสริมความปลอดภัย 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
ปุ่ม
อย่าลืมล้างแคช ขณะนี้บล็อกที่หายไปของคุณได้รับอนุญาตและควรหายไป