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 코드를 걸러버리는 위에 문의하신 결과가 나옵니다.

 

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

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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