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?

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.