DEBUG (7): Проблема безпеки: ім'я_блока не було дозволено. (Magento system.log)


22

У system.logфайлі моєї установки Magento у мене є таке повідомлення про помилку

DEBUG (7): Проблема безпеки: block_nameне була включена в білий список.

звідки block_nameназва блоку, який використовується в моєму магазині.

Що це означає і як це виправити?

Відповіді:


28

Це повідомлення означає, що один із блоків, який використовується у вашому магазині 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кнопку.

Не забудьте очистити кеш. Ваш відсутній блок тепер дозволений, і помилка повинна бути знищена.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.