DEBUG (7): Vấn đề bảo mật: block_name chưa được đưa vào danh sách trắng. (Hệ thống Magento.log)


22

Trong system.logtệp cài đặt Magento của tôi, tôi có thông báo lỗi sau

DEBUG (7): Vấn đề bảo mật: block_namechưa được đưa vào danh sách trắng.

nơi block_namelà tên của một khối được sử dụng trong cửa hàng của tôi.

Nó có nghĩa là gì và làm thế nào để tôi sửa nó?

Câu trả lời:


28

Thông báo này có nghĩa là một trong những khối được sử dụng trong cửa hàng Magento của bạn không nằm trong danh sách trắng.

Với Security Patch SUPEE-6788Magento CE 1.9.2.2 , một danh sách trắng mới cho các khối đã được giới thiệu. Magento hiện bao gồm một danh sách trắng các khối hoặc chỉ thị được phép. Nếu một mô-đun hoặc tiện ích mở rộng sử dụng các biến như {{config path=”web/unsecure/base_url”}}{{block type=rss/order_new}}trong các trang hoặc email CMS và các lệnh không có trong danh sách này, bạn sẽ cần thêm chúng vào cơ sở dữ liệu của mình. Nếu một khối không nằm trong danh sách trắng, nó sẽ không được hiển thị.

lỗi

Kể từ Security Patch SUPEE-7405Magento CE 1.9.2.3, có một tính năng cốt lõi mới sẽ dễ dàng xác định các khối bị thiếu trong danh sách trắng cho bạn. Các blockDirective($construction)chức năng trong

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

đã được cập nhật và bây giờ trông như thế này:

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

Thông báo mới

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

Nếu một khối bị thiếu trong danh sách trắng thì hệ thống sẽ phát hiện ra nó và in một lỗi bao gồm tên khối bị thiếu trong system.logtệp nằm trong

[your magento install dir]/var/log/

Tất nhiên bạn phải kích hoạt đăng nhập để nhận được thông báo này. Đây là lỗi bạn sẽ thấy

DEBUG (7): Vấn đề bảo mật: block_namechưa được đưa vào danh sách trắng.

Làm thế nào để khắc phục

Để khắc phục điều này, bạn sẽ phải tự thêm tên khối bị thiếu vào danh sách trắng. Chỉ thêm các khối mà bạn tin tưởng. Nếu bạn không biết khối này đến từ đâu thì hãy tìm hiểu trước. Khi bạn chắc chắn rằng bạn muốn thêm khối bị thiếu, sau đó trong Bảng quản trị Magento của bạn, hãy đi tới

System > Permissions > Blocks

và bấm vào Add New Blocknút. Từ đây bạn có thể thêm khối còn thiếu vào danh sách trắng. Chỉ cần nhập thông block_namebáo hiển thị trong thông báo lỗi của bạn vào Block Name *trường, đặt Is Allowedthành "Có" và nhấn Save Blocknút.

Đừng quên xóa bộ nhớ cache. Khối bị thiếu của bạn hiện đã được cho phép và lỗi sẽ biến mất.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.