DEBUG (7) : 보안 문제 : block_name이 허용되지 않았습니다. (Magento system.log)


22

에서 system.log내 젠토의 파일 나는 다음과 같은 오류 메시지가 설치

디버그 (7) : 보안 문제 : block_name허용 목록에 없습니다.

어디에 block_name내 가게에서 사용 된 블록의 이름입니다.

그것은 무엇을 의미하며 어떻게 수정합니까?

답변:


28

이 메시지는 Magento 상점에서 사용되는 블록 중 하나가 허용 목록에 없음을 의미합니다.

보안 패치 SUPEE-6788Magento 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 AllowedSave Block버튼을 누르십시오.

캐시를 플러시하는 것을 잊지 마십시오. 누락 된 블록이 이제 허용되고 오류가 사라집니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.