[편리님] 내용관리의 html_purifier 필요성 여부

[편리님] 내용관리의 html_purifier 필요성 여부

QA

[편리님] 내용관리의 html_purifier 필요성 여부

본문

내용관리에 아이프레임으로 지도 넣거나 html_purifier에서 지정된 html을 쓸 수 있는경우가 발생 할수 있을것 같아서요~

내용관리 페이지를 디자인 팀에서 사용하기 때문에 아이프레임이 안된다고 하여 임시적으로 아래처럼 적용하여 사용중입니다.


function html_purifier($html)
{
	// 컨텐츠 페이지는 제외한다
	if(preg_match("`\/bbs\/content\.php\?co_id\=`i", $_SERVER['REQUEST_URI']) && $_GET['co_id']) { return $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');
    $config = HTMLPurifier_Config::createDefault();
    // data/cache 디렉토리에 CSS, HTML, URI 디렉토리 등을 만든다.
    $config->set('Cache.SerializerPath', G5_DATA_PATH.'/cache');
    $config->set('HTML.SafeEmbed', true);
    $config->set('HTML.SafeObject', true);
    $config->set('HTML.SafeIframe', true);
    $config->set('URI.SafeIframeRegexp','%^(https?:)?//('.$safeiframe.')%');
    $config->set('Attr.AllowedFrameTargets', array('_blank'));
    $purifier = new HTMLPurifier($config);
    return $purifier->purify($html);
}



추가1
---
>+ 관리자로 접속하여 내용관리를 하기 때문에 XSS공격을 차단 하기 위한 `html_purifier()`함수 사용이 무의미 하다.

추가2
---
>+ `html_purifier()` 제외 설정을 `$_GET['co_id']`만 추가 하였을 경우 게시판 뷰측 에서 파라미터로 `co_id`를 붙여  `html_purifier()` 함수를 건너 뛸 수 있을 가능성이 매우 클것 같습니다.
> 페이지 URI값을 가지고 정규식으로 매칭 하고 `$_GET['co_id']` 까지 검사 한다면 가능 하지 않을까 싶습니다.

추가3
---
>+ 게시판에서 `board.php?bo_table=test&wr_id=1&co_id=2222222&is_url=/bbs/content.php?co_id=`처럼 접속하는 유저에 대해서는 처리 방안이 떠오르지 않음

이 질문에 댓글 쓰기 :

답변 1

말씀하신 부분에 대해서 검토를 해봤는데요..
내용관리 각각에서 html_purifier 함수 사용 여부를 선택할 수 있도록 하는 것으로 수정할 예정입니다.
conv_content 함수를 수정해서 참일 때만 html_purifier 함수를 거치도록 하는 게 좋을 것 같다는 결론에 도달했습니다.
답변을 작성하시기 전에 로그인 해주세요.
전체 17,127
QA 내용 검색

회원로그인

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