DEBUG (7): problème de sécurité: nom_bloc n'a pas été ajouté à la liste blanche. (Magento system.log)

22

Dans le system.logfichier de mon installation Magento, j'ai le message d'erreur suivant

DEBUG (7): Problème de sécurité: block_namen'a pas été ajouté à la liste blanche.

block_nameest le nom d'un bloc utilisé dans mon magasin.

Qu'est-ce que cela signifie et comment puis-je le corriger?

Format
la source

Réponses:

28

Ce message signifie que l'un des blocs utilisés dans votre boutique Magento n'est pas sur la liste blanche.

Avec Security Patch SUPEE-6788 et Magento CE 1.9.2.2, une nouvelle liste blanche pour les blocs a été introduite. Magento inclut désormais une liste blanche des blocs ou directives autorisés. Si un module ou une extension utilise des variables comme {{config path=”web/unsecure/base_url”}}et {{block type=rss/order_new}}dans les pages ou les e-mails du CMS et que les directives ne figurent pas dans cette liste, vous devrez les ajouter à votre base de données. Si un bloc n'est pas sur la liste blanche, il ne sera pas rendu.

Erreur

Depuis le patch de sécurité SUPEE-7405 et Magento CE 1.9.2.3, il existe une nouvelle fonctionnalité de base qui identifiera facilement les blocs manquants dans la liste blanche pour vous. La blockDirective($construction)fonction dans

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

a été mis à jour et ressemble maintenant à ceci:

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

Remarquez le nouveau

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

Si un bloc est absent de la liste blanche, le système le détectera et affichera une erreur incluant le nom des blocs manquants dans le system.logfichier situé dans

[your magento install dir]/var/log/

Bien sûr, vous devez activer la journalisation pour obtenir ce message. C'est l'erreur que vous verrez

DEBUG (7): Problème de sécurité: block_namen'a pas été ajouté à la liste blanche.

Comment réparer

Pour résoudre ce problème, vous devrez ajouter manuellement le nom des blocs manquants à la liste blanche. Ajoutez uniquement des blocs auxquels vous faites confiance. Si vous ne savez pas d'où vient le bloc, découvrez-le d'abord. Une fois que vous êtes sûr de vouloir ajouter le bloc manquant, dans votre panneau d'administration Magento, accédez à

System > Permissions > Blocks

et cliquez sur le Add New Blockbouton. De là, vous pouvez ajouter le bloc manquant à la liste blanche. Entrez simplement le block_namequi apparaît dans votre message d'erreur dans le Block Name *champ, réglez Is Allowedsur "Oui" et appuyez sur le Save Blockbouton.

N'oubliez pas de vider le cache. Votre bloc manquant est maintenant autorisé et l'erreur devrait avoir disparu.

Format
la source