Відповіді:
Це повідомлення означає, що один із блоків, який використовується у вашому магазині Magento, не міститься у списку білого списку.
За допомогою патчу безпеки SUPEE-6788 та Magento CE 1.9.2.2 був представлений новий білий список блоків. Magento тепер включає білий список дозволених блоків або директив. Якщо модуль або розширення використовує такі змінні , як {{config path=”web/unsecure/base_url”}}
і {{block type=rss/order_new}}
в CMS сторінок або повідомлень електронної пошти, а також директиви немає в цьому списку, вам потрібно буде додати їх з базою даних. Якщо блоку немає у білому списку, він не буде виведений.
Помилка
Щодо безпеки 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
System > Permissions > Blocks
і натисніть на Add New Block
кнопку. Звідси ви можете додати пропущений блок у білий список. Просто введіть те, block_name
що з’явилося у вашому повідомленні про помилку в Block Name *
полі, встановіть Is Allowed
«Так» і натисніть Save Block
кнопку.
Не забудьте очистити кеш. Ваш відсутній блок тепер дозволений, і помилка повинна бути знищена.