Jawaban:
Pesan ini berarti bahwa salah satu blok yang digunakan di toko Magento Anda tidak ada di daftar putih.
Dengan Security Patch SUPEE-6788 dan Magento CE 1.9.2.2 daftar putih baru untuk blok diperkenalkan. Magento sekarang menyertakan daftar putih blok atau arahan yang diizinkan. Jika modul atau ekstensi menggunakan variabel seperti {{config path=”web/unsecure/base_url”}}
dan {{block type=rss/order_new}}
di halaman CMS atau email, dan arahan tidak ada dalam daftar ini, Anda perlu menambahkannya dengan database Anda. Jika sebuah blok tidak ada di daftar putih itu tidak akan diberikan.
Kesalahan
Pada Patch Keamanan SUPEE-7405 dan Magento CE 1.9.2.3 ada fitur inti baru yang akan dengan mudah mengidentifikasi blok yang hilang dari daftar putih untuk Anda. The blockDirective($construction)
fungsi dalam
app/code/core/Mage/Core/Model/Email/Template/Filter.php
telah diperbarui dan sekarang terlihat seperti ini:
/**
* 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();
}
Perhatikan yang baru
Mage::log('Security problem: ' . $blockParameters['type'] . ' has not been whitelisted.');
Jika ada blok yang hilang dari daftar putih maka sistem akan mendeteksinya dan mencetak kesalahan termasuk nama blok yang hilang dalam system.log
file yang terletak di
[your magento install dir]/var/log/
Tentu saja Anda harus mengaktifkan pencatatan untuk mendapatkan pesan ini. Ini adalah kesalahan yang akan Anda lihat
DEBUG (7): Masalah keamanan:
block_name
belum masuk daftar putih.
Bagaimana cara memperbaiki
Untuk memperbaikinya, Anda harus secara manual menambahkan nama blok yang hilang ke daftar putih. Hanya tambahkan blok yang Anda percayai. Jika Anda tidak tahu dari mana blok itu berasal maka cari tahu dulu. Setelah Anda yakin ingin menambahkan blok yang hilang, lalu di Panel Admin Magento, buka
System > Permissions > Blocks
dan klik Add New Block
tombolnya. Dari sini Anda dapat menambahkan blok yang hilang ke daftar putih. Cukup masukkan block_name
yang muncul di pesan kesalahan Anda di Block Name *
bidang, setel Is Allowed
ke "Ya" dan tekan Save Block
tombol.
Jangan lupa flush cache. Blok Anda yang hilang sekarang diizinkan dan kesalahannya harus hilang.