Respuestas:
Este mensaje significa que uno de los bloques que se usa en su tienda Magento no está en la lista blanca.
Con Security Patch SUPEE-6788 y Magento CE 1.9.2.2 se introdujo una nueva lista blanca para bloques. Magento ahora incluye una lista blanca de bloques o directivas permitidas. Si un módulo o extensión usa variables como {{config path=”web/unsecure/base_url”}}
y {{block type=rss/order_new}}
en páginas o correos electrónicos de CMS, y las directivas no están en esta lista, deberá agregarlas a su base de datos. Si un bloque no está en la lista blanca, no se representará.
Error
A partir del parche de seguridad SUPEE-7405 y Magento CE 1.9.2.3, hay una nueva característica central que identificará fácilmente los bloques que faltan en la lista blanca para usted. La blockDirective($construction)
función en
app/code/core/Mage/Core/Model/Email/Template/Filter.php
fue actualizado y ahora se ve así:
/**
* 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();
}
Note lo nuevo
Mage::log('Security problem: ' . $blockParameters['type'] . ' has not been whitelisted.');
Si falta un bloque de la lista blanca, el sistema lo detectará e imprimirá un error que incluye el nombre de los bloques que faltan en el system.log
archivo ubicado en
[your magento install dir]/var/log/
Por supuesto, debe tener habilitado el registro para obtener este mensaje. Este es el error que verás
DEPURACIÓN (7): Problema de seguridad:
block_name
no se ha incluido en la lista blanca.
Como arreglar
Para solucionar esto, deberá agregar manualmente el nombre de los bloques que faltan a la lista blanca. Solo agrega bloques en los que confíes. Si no sabes de dónde viene el bloque, descúbrelo primero. Una vez que esté seguro de que desea agregar el bloque que falta, en su Panel de administración de Magento vaya a
System > Permissions > Blocks
y haga clic en el Add New Block
botón Desde aquí puede agregar el bloque que falta a la lista blanca. Simplemente ingrese lo block_name
que apareció en su mensaje de error en el Block Name *
campo, configúrelo Is Allowed
en "Sí" y presione el Save Block
botón.
No olvides vaciar el caché. Su bloque faltante ahora está permitido y el error debería desaparecer.