포럼

soo_replace_content.zip

다운 받으셔서 압축을 푸신 후 애드온으로 설치하시면 됩니다.

기능은 단순합니다.

기능1

/\<img[^>]+src\=[^>]+act=(disp|proc)[^>]+\>/im 구문이 <span class="misol_dummy"></span> 로 치환됩니다. 공백이 아닌 이유는 공백이 되면서 새로운 CSRF 코드가 완성될 수도 있기 때문입니다.

 

기능2

알려진 브라우저 ACCEPT 헤더를 가진 브라우저에서 해당 코드가 있는 페이지를 방문하더라도 실제 실행되지 않도록 했습니다.

 

사용권

사용권은 MIT 라이선스를 따릅니다.

<?php
/**
 * @file soo_replace_content.addon.php
 * @author MinSoo Kim <misol.kr@gmail.com>
 * @brief Replace image tag CSRF text.
 */
// Stop if non-logged-in user is
if(!defined('__XE__')) exit();

/**
 * Replace content
 * */
if(($this->act === 'procBoardInsertDocument' || $this->act === 'procBoardInsertComment' || $this->act === 'procTextyleInsertComment') && $called_position == 'before_module_init' && is_string(Context::get('content')))
{
    $board_content = '';
    $board_content = strval(Context::get('content'));
    $board_content = preg_replace("/\<img[^>]+src\=[^>]+act=(disp|proc)[^>]+\>/im", '<span class="misol_dummy"></span>', $board_content);
    Context::set('content', $board_content);
}

/**
 * if XE is requested... with img tag close.
**/
if((stripos($this->act, 'proc') !== FALSE || stripos($this->act, 'disp') !== FALSE) && $called_position == 'before_module_init')
{
    $http_img_accept_headers = array(
        'image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5', // InternetExplorer IMG
        'image/png,image/svg+xml,image/jxr,image/*;q=0.8,*/*;q=0.5', // InternetExplorer 11, MS Edge IMG
        'image/png,image/*;q=0.8,*/*;q=0.5', // FireFox IMG
        'image/webp,*/*;q=0.8', //Chrome IMG
        'image/webp,image/*,*/*;q=0.8', //Chrome IMG

        'audio/webm,audio/ogg,audio/wav,audio/*;q=0.9,application/ogg;q=0.7,video/*;q=0.6;*/*;q=0.5', // FireFox VIDEO
        'video/webm,video/ogg,video/*;q=0.9,application/ogg=0.7,audio/*;q=0.6;*/*;q=0.5' //FireFox AUDIO
    );

    if(in_array(str_replace(array(' ','    '),array('',''),$_SERVER['HTTP_ACCEPT']), $http_img_accept_headers))
    {
        Context::close();
        exit();
    }
}
?>

 

글쓴이 제목 최종 글
BJ람보 [XpressEngine] Slack 채팅방에 같이 참여하기!  
BJ람보 1.8.12으로 인해 ajaxboard의 Redirect 실행오류. [2] 2015.10.25 by BJ람보
CosignStudio 검색중 XE와 워드프레스 관련 글이 있어서 공유해 봅니다. [29] 2015.10.23 by seven7
treasurej [아프리카TV 생방송] 충쌤의 XE랑(월,화 밤11시) * 진화쌤의 반응형 레이아웃 제작(수,목 밤10시) [29] file 2015.10.23 by 마음의빈자리
이온디 [레이아웃 자랑] 이온디 레이아웃 버전 0.3 (2015년 10월 23일) file  
BJ람보 듣고 싶은 XE관련 강좌! 신청 받아요.. [1] 2015.10.20 by 키스투엑스이
고나리자 클라우드플레어 좋긴한데 속도 저하가 심각하네요. [2] 2015.10.20 by BJ람보
오똥오똥 XECon 2015를 기다리고 있는 병아리 개발자입니다. [2] 2015.10.20 by 퍼니엑스이
misol 문제가 된 글을 삭제했습니다. [11] 2015.10.18 by misol
미니룹 비용을 들여서라도 플래닛 모듈을 업그레이드 해볼 생각입니다. [2] 2015.10.18 by 키스투엑스이
배워서남준다 모든 POST 요청은 checkCSRF()를 통해 referer 검증 등의 절차를 거칩니다.  
배워서남준다 가상 사이트 어떻게 사용하고 계시나요? [14] 2015.10.17 by 배워서남준다
newi nginx 1.9.5 버전 괜찮은 가요 ? [1] 2015.10.16 by 기진곰
가을풍경 XECon2015 에 같이 가실 대구분 없나요?  
misol 제가 문제를 일으킨 코드를 걸러내는 애드온입니다. file  
배워서남준다 카페XE 에서 관리자 권한 문제에 대해서... [9] 2015.10.15 by 이온디
배워서남준다 XE에서 사용하는 아이콘들을 모아봤습니다. [4] file 2015.10.13 by 참치.k
BJ람보 [BJRambo] XpressEngine 위젯강의 [1] 2015.10.13 by BJ람보
레몬시 이 사이트도 XE로 만들어진 사이트인가요? [2] file 2015.10.07 by misol
delphiXE2 XE3이 어떤 모습일지 기대가 큽니다. [2] 2015.10.07 by XE