답변:
이 메시지는 Magento 상점에서 사용되는 블록 중 하나가 허용 목록에 없음을 의미합니다.
보안 패치 SUPEE-6788 및 Magento CE 1.9.2.2 와 함께 블록에 대한 새로운 화이트리스트가 도입되었습니다. Magento는 이제 허용 된 블록 또는 지시문의 화이트리스트를 포함합니다. 모듈 또는 확장 에서 CMS 페이지 또는 전자 메일 {{config path=”web/unsecure/base_url”}}
과 같은 변수를 사용 {{block type=rss/order_new}}
하고 지시문이이 목록에 없으면 데이터베이스와 함께 추가해야합니다. 화이트리스트에 블록이 없으면 렌더링되지 않습니다.
오류
현재 보안 패치 SUPEE-7405 및 젠토 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/
물론이 메시지를 받으려면 로깅을 활성화해야합니다. 이것은 당신이 보게 될 오류입니다
디버그 (7) : 보안 문제 :
block_name
허용 목록에 없습니다.
어떻게 고치는 지
이 문제를 해결하려면 누락 된 블록 이름을 화이트리스트에 수동으로 추가해야합니다. 신뢰할 수있는 블록 만 추가하십시오. 블록이 어디에서 오는지 모른다면 먼저 이것을 찾으십시오. 누락 된 블록을 추가하려면 Magento 관리자 패널에서
System > Permissions > Blocks
Add New Block
버튼을 클릭하십시오 . 여기에서 누락 된 블록을 화이트리스트에 추가 할 수 있습니다. 필드에 block_name
오류 메시지에 표시된 것을 입력하고 "예"로 Block Name *
설정 한 Is Allowed
후 Save Block
버튼을 누르십시오.
캐시를 플러시하는 것을 잊지 마십시오. 누락 된 블록이 이제 허용되고 오류가 사라집니다.