Yanıtlar:
Bu mesaj, Magento mağazasında kullanılan bloklardan birinin beyaz listede olmadığını gösterir.
İle Güvenlik Yaması SUPEE-6788 ve Magento CE 1.9.2.2 bloklar için yeni bir beyaz liste tanıtıldı. Magento artık izin verilen blokların veya direktiflerin beyaz bir listesini içeriyor. Bir modül veya uzantı, CMS sayfalarında veya e-postalarındaki {{config path=”web/unsecure/base_url”}}
ve gibi değişkenleri kullanıyorsa {{block type=rss/order_new}}
ve yönergeler bu listede yoksa, bunları veritabanınızla eklemeniz gerekir. Bir blok beyaz listede değilse, oluşturulmaz.
Hata
İtibariyle Güvenlik Yaması SUPEE-7405 ve Magento CE 1.9.2.3 kolayca sizin için beyaz listeden eksik bloklar belirleyecektir yeni çekirdek özelliği vardır. İçindeki blockDirective($construction)
işlev
app/code/core/Mage/Core/Model/Email/Template/Filter.php
güncellendi ve şimdi şöyle görünüyor:
/**
* 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();
}
Yeni haber
Mage::log('Security problem: ' . $blockParameters['type'] . ' has not been whitelisted.');
Beyaz listeden bir blok eksikse, sistem bunu algılar ve içinde bulunan system.log
dosyadaki eksik blok adını içeren bir hata basar.
[your magento install dir]/var/log/
Elbette bu mesajı alabilmek için günlüğe kaydetmeyi etkinleştirmiş olmanız gerekir. Bu göreceğiniz hatadır
DEBUG (7): Güvenlik sorunu:
block_name
beyaz listeye alınmadı.
Nasıl düzeltilir
Bunu düzeltmek için eksik blok ismini elle beyaz listeye eklemelisiniz. Sadece güvendiğiniz blokları ekleyin. Bloğun nereden geldiğini bilmiyorsanız, önce bunu öğrenin. Eksik bloğu eklemek istediğinizden emin olduğunuzda, daha sonra Magento Yönetici Panelinizde
System > Permissions > Blocks
ve Add New Block
düğmesine tıklayın. Buradan eksik bloğu beyaz listeye ekleyebilirsiniz. Sadece alana block_name
hata mesajınızda görünenleri girin,Block Name *
Is Allowed
"Evet" ve hit Save Block
düğmesini.
Önbelleği temizlemeyi unutma. Kayıp bloğunuza şimdi izin verilir ve hatanın giderilmesi gerekir.