DEBUG (7): Sicherheitsproblem: Blockname wurde nicht in die Whitelist aufgenommen. (Magento system.log)

22

In der system.logDatei meiner Magento-Installation habe ich folgende Fehlermeldung

DEBUG (7): Sicherheitsproblem: block_namewurde nicht in die Whitelist aufgenommen.

Wo block_nameist der Name eines Blocks, der in meinem Geschäft verwendet wird?

Was bedeutet es und wie behebe ich es?

Format
quelle

Antworten:

28

Diese Meldung bedeutet, dass einer der in Ihrem Magento-Store verwendeten Blöcke nicht auf der Whitelist steht.

Mit dem Sicherheitspatch SUPEE-6788 und Magento CE 1.9.2.2 wurde eine neue Whitelist für Blöcke eingeführt. Magento enthält jetzt eine Whitelist mit zulässigen Blöcken oder Anweisungen. Wenn ein Modul oder eine Erweiterung Variablen wie {{config path=”web/unsecure/base_url”}}und {{block type=rss/order_new}}in CMS-Seiten oder E-Mails verwendet und die Direktiven nicht in dieser Liste enthalten sind, müssen Sie sie Ihrer Datenbank hinzufügen. Befindet sich ein Block nicht in der Whitelist, wird er nicht gerendert.

Error

Ab dem Sicherheitspatch SUPEE-7405 und Magento CE 1.9.2.3 gibt es ein neues Kernfeature, mit dem Sie problemlos Blöcke identifizieren können, die in der Whitelist für Sie fehlen. Die blockDirective($construction)Funktion in

app/code/core/Mage/Core/Model/Email/Template/Filter.php

wurde aktualisiert und sieht nun so aus:

/**
 * 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();
}

Beachten Sie das Neue

Mage::log('Security problem: ' . $blockParameters['type'] . ' has not been whitelisted.');

Wenn ein Block in der Whitelist fehlt, wird er vom System erkannt und ein Fehler mit dem Namen des fehlenden Blocks in der system.logDatei in ausgegeben

[your magento install dir]/var/log/

Natürlich muss die Protokollierung aktiviert sein, um diese Nachricht zu erhalten. Dies ist der Fehler, den Sie sehen werden

DEBUG (7): Sicherheitsproblem: block_namewurde nicht in die Whitelist aufgenommen.

Wie repariert man

Um dies zu beheben, müssen Sie den Namen der fehlenden Blöcke manuell zur Whitelist hinzufügen. Fügen Sie nur vertrauenswürdige Blöcke hinzu. Wenn Sie nicht wissen, woher der Block kommt, finden Sie dies zuerst heraus. Wenn Sie sicher sind, dass Sie den fehlenden Block hinzufügen möchten, gehen Sie in Ihrem Magento Admin-Panel zu

System > Permissions > Blocks

und klicken Sie auf die Add New BlockSchaltfläche. Von hier aus können Sie den fehlenden Block zur Whitelist hinzufügen. Geben Sie einfach das block_name, was in Ihrer Fehlermeldung angezeigt wird, in das Block Name *Feld ein, setzen Sie es Is Allowedauf "Ja" und Save Blockdrücken Sie die Taste.

Vergiss nicht den Cache zu leeren. Ihr fehlender Block ist jetzt erlaubt und der Fehler sollte verschwunden sein.

Format
quelle