htmlpurifier 질문요

htmlpurifier 질문요

QA

htmlpurifier 질문요

본문

게시글 보기페이지에서 글내용 출력시 $view['content']변수로 출력이 되던데

저 게시글 내용값이 가공되는 과정을 보다보니 common.lib.php에서

$content = html_purifier($content); 가 있더라구요.

글내용 값(wr_content)이 <p><img src="https://test.com/data/upload/editor/1909/썸네일파일이름.png" style="width:256px" ></p>입니다.

echo "전 : ".$content;

$content = html_purifier($content);

echo "후 : ".$content;

"전 : "에서는 잘나오는데 "후 : "에서는 <p></p>만 출력이 됩니다.

원인이 뭔가요?

이 질문에 댓글 쓰기 :

답변 2

test.com 을 보니, 아마도 보안 때문에 가상으로 만드신 도메인 같은데요.. 

소스상 실제 도메인 및 파일이름 등을 알려 주셔야 도움을 드리는 분이 계실 것 같습니다. 

 

/lib/commond.lib.php에 정의된 함수입니다.


// http://htmlpurifier.org/
// Standards-Compliant HTML Filtering
// Safe  : HTML Purifier defeats XSS with an audited whitelist
// Clean : HTML Purifier ensures standards-compliant output
// Open  : HTML Purifier is open-source and highly customizable
function html_purifier($html)
{
    $f = file(G5_PLUGIN_PATH.'/htmlpurifier/safeiframe.txt');
    $domains = array();
    foreach($f as $domain){
        // 첫행이 # 이면 주석 처리
        if (!preg_match("/^#/", $domain)) {
            $domain = trim($domain);
            if ($domain)
                array_push($domains, $domain);
        }
    }
    // 내 도메인도 추가
    array_push($domains, $_SERVER['HTTP_HOST'].'/');
    $safeiframe = implode('|', $domains);
    include_once(G5_PLUGIN_PATH.'/htmlpurifier/HTMLPurifier.standalone.php');
    include_once(G5_PLUGIN_PATH.'/htmlpurifier/extend.video.php');
    $config = HTMLPurifier_Config::createDefault();
    // data/cache 디렉토리에 CSS, HTML, URI 디렉토리 등을 만든다.
    $config->set('Cache.SerializerPath', G5_DATA_PATH.'/cache');
    $config->set('HTML.SafeEmbed', false);
    $config->set('HTML.SafeObject', false);
    $config->set('Output.FlashCompat', false);
    $config->set('HTML.SafeIframe', true);
    if( (function_exists('check_html_link_nofollow') && check_html_link_nofollow('html_purifier')) ){
        $config->set('HTML.Nofollow', true);    // rel=nofollow 으로 스팸유입을 줄임
    }
    $config->set('URI.SafeIframeRegexp','%^(https?:)?//('.$safeiframe.')%');
    $config->set('Attr.AllowedFrameTargets', array('_blank'));
    //유튜브, 비메오 전체화면 가능하게 하기
    $config->set('Filter.Custom', array(new HTMLPurifier_Filter_Iframevideo()));
    $purifier = new HTMLPurifier($config);
    return $purifier->purify($html);
}

 

위의 기능을 수행하는 함수입니다.
// Standards-Compliant HTML Filtering
// Safe  : HTML Purifier defeats XSS with an audited whitelist
// Clean : HTML Purifier ensures standards-compliant output
// Open  : HTML Purifier is open-source and highly customizable

HTML 필터링하고 보안체크하고 뭐 그런 기능이라 기본 html 태그를 제외하고 html 코드를 걸러버리는 위에 문의하신 결과가 나옵니다.

 

쉽게 테스트만 넣고 줄바꿈 정도만 되도록 하게 만드는 함수라고 생각하시면 될것 같습니다.

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 3,154
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT