그누보드 4에 그누5의 html purifier 적용하기

불당   
   조회 5448   추천 0     비추천 0    

그누보드 5에는 xss/csrf를 막기 위해서 html purifier가 적용되어 있습니다.

lib/common.lib.php의 conv_content 함수의 복잡한 로직이 간결하게 html purifier로 줄어져 있구요.

 

그누5의 html purifier를 적용하는 방법은 다음과 같습니다.

 

lib/common.lib.php의 conv_content 함수를 아래의 것으로 교체 합니다.

 

// 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)
{
    global $g4;

    $f = file($g4['path'].'/plugin/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($g4['path'].'/plugin/htmlpurifier/HTMLPurifier.standalone.php');
    $config = HTMLPurifier_Config::createDefault();
    // data/cache 디렉토리에 CSS, HTML, URI 디렉토리 등을 만든다.
    $config->set('Cache.SerializerPath', $g4[data_path].'/cache');
    $config->set('HTML.SafeEmbed', false);
    $config->set('HTML.SafeObject', false);
    $config->set('Output.FlashCompat', false);
    $config->set('HTML.SafeIframe', true);
    $config->set('URI.SafeIframeRegexp','%^(https?:)?//('.$safeiframe.')%');
    $config->set('Attr.AllowedFrameTargets', array('_blank'));

    // 불당팩 커스터마이징 -- 여기서부터
   
    // 문자셋을 지정해 줍니다.
    $config->set('Core.Encoding', $g4['charset']);

    // <p> </p> 같은 코드가 정상으로 출력되게 합니다.
    // http://stackoverflow.com/questions/7104689/html-purifier-clears-p-tag
    $config->set('Core.EscapeNonASCIICharacters', true);

    // 인터넷 주소를 자동으로 링크로 바꿔주는 기능
    $config->set('AutoFormat.Linkify', true);

    // 이미지 크기 제한 해제 (한국에서 많이 쓰는 웹툰이나 짤방과 호환성 유지를 위해)
    $config->set('HTML.MaxImgLength', null);
    $config->set('CSS.MaxImgLength', null);

    $purifier = new HTMLPurifier($config);
    return $purifier->purify($html);
}

 

 

 

그누5의 plugin/htmlpurifier/ 디렉토리의 내용물을 plug/htmlpurifier/ 디렉토리에 업로드 합니다.

 

data/cache 디렉토리를 만듭니다. 권한은 잘 줘야죠.

 

그러면 잘~!!! 동작 합니다.

- opencode.co.kr -
초특가 그누보드 원에잇
스노우보드 인기 쇼핑몰,이월제품 올킬 특가, 지원금 20만원, 12개월 할부
반응형홈페이지제작-에스와이웹
그누보드,아미나테마,이윰테마기반 홈페이지제작,블로그, 네이버모두, 쇼핑몰 제작지원
크리에이터링크 그누보드
누구나 고퀄리티 사이트를 만드는 가장 쉬운방법! 코딩 없이, 100% 무료홈페이지
파워링크 AD   클릭초이스등록
불당 2015-10
html purifier를 적용하면 게시글 읽는 속도가 떨어지기 때문에 반드시 캐슁을 해야 합니다.
캐슁 안하면 ㄷㄷㄷ 입니다.
캐슁은 가능하면 ram disk에 하면 좋구요.


제목Page 1/28
2015-09   61982   불당
2015-09   59016   불당
2012-07   17911   불당
06-02   148   불당
2016-03   3606   불당
2016-03   3533   불당
2016-02   3824   불당
2016-02   4271   불당
2016-01   4322   불당
2016-01   4421   불당
2016-01   4042   불당
2015-12   4900   불당
2015-12   4230   불당
2015-12   4519   불당
2015-12   6590   불당
2015-12   4223   불당
2015-11   4924   불당
2015-10   5024   불당
2015-10   5023   불당
2015-10   4788   불당
2015-10   4638   불당
2015-10   5449   불당
2015-10   4448   불당