DEBUG(7):セキュリティの問題:block_nameはホワイトリストに登録されていません。(マゼンタsystem.log)


22

ではsystem.log私のMagentoのファイル、私は次のエラーメッセージを持っているインストール

DEBUG(7):セキュリティの問題:block_nameホワイトリストに登録されていません。

どこblock_nameが私の店で使用されるブロックの名前です。

それはどういう意味ですか、どうすれば修正できますか?

回答:


28

このメッセージは、Magentoストアで使用されているブロックの1つがホワイトリストにないことを意味します。

セキュリティパッチSUPEE-6788MagentoのCE 1.9.2.2ブロックのための新たなホワイトリストが導入されました。Magentoには、許可されたブロックまたはディレクティブのホワイトリストが含まれるようになりました。モジュールまたは拡張機能がCMSページや電子メール{{config path=”web/unsecure/base_url”}}などの変数を使用{{block type=rss/order_new}}し、ディレクティブがこのリストにない場合は、データベースに追加する必要があります。ブロックがホワイトリストにない場合、レンダリングされません。

エラー

とおりセキュリティパッチSUPEE-7405Magentoの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ボタンを。

キャッシュをフラッシュすることを忘れないでください。これで、欠落しているブロックが許可され、エラーがなくなるはずです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.