回答:
このメッセージは、Magentoストアで使用されているブロックの1つがホワイトリストにないことを意味します。
セキュリティパッチSUPEE-6788とMagentoのCE 1.9.2.2ブロックのための新たなホワイトリストが導入されました。Magentoには、許可されたブロックまたはディレクティブのホワイトリストが含まれるようになりました。モジュールまたは拡張機能がCMSページや電子メール{{config path=”web/unsecure/base_url”}}
などの変数を使用{{block type=rss/order_new}}
し、ディレクティブがこのリストにない場合は、データベースに追加する必要があります。ブロックがホワイトリストにない場合、レンダリングされません。
エラー
とおりセキュリティパッチ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
ボタンを。
キャッシュをフラッシュすることを忘れないでください。これで、欠落しているブロックが許可され、エラーがなくなるはずです。