Câu trả lời:
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-6788 và Magento 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”}}
và {{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-7405 và Magento 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.log
tệ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_name
chư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 Block
nú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_name
báo hiển thị trong thông báo lỗi của bạn vào Block Name *
trường, đặt Is Allowed
thành "Có" và nhấn Save Block
nú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.