포럼

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();
    }
}
?>

 

글쓴이 제목 최종 글
기진곰 소셜 로그인의 명암 [14] 2015.11.12 by 기진곰
이온디 xecon 참석하시는 분들 계시면 모여서 ktx 할인 적용해서 같이 가보실래요? [6] 2015.11.11 by 독도2005
엘포 Let's Encrypt 설치해 보았습니다 [12] 2015.11.11 by 엘포
이온디 [스킨자랑] 포인트 마켓 스킨 만들었어요! [7] file 2015.11.11 by 이온디
광전사 XE는 어떤형식으로 게시판이 만들어지나요? [1] 2015.11.08 by misol
웹엔진 XE 데모가 생겼네요. [2] 2015.11.07 by Stever베이직스터더
뭐로할까 진짜 초보적인 질문 죄송한데요ㅠㅠ [3] 2015.11.07 by I-JEX
데벨 퍼니오 호스팅 사용해보신분 있으신가요? [16] 2015.11.06 by 이온디
마이웹 laraveltricks.com 사이트 복제 후기 입니다. [2] 2015.11.05 by 마이웹
마이웹 오늘 Laravel 설치했습니다. [3] 2015.11.04 by 마이웹
가르송 스팸글 대박이네요.. [4] file 2015.11.04 by Icarus
BJ람보 [XpressEngine] XE 모듈속 메소드 이용하기! [중고급강좌]  
위드파트너 1.8.12 보안패치 -> xe 알림센터 모듈 오류 [6] 2015.11.03 by 위드파트너
익명 php 5.2.17에서 XE를 쓰기위해 다른 버전을 쓰면...? [3] 2015.11.02 by Luatic™
delphiXE2 5달 넘게 진행되던 PHP7 개발이 끝을 향해.. [2] 2015.11.02 by Icarus
자동차 XE 와 RPG maker MV 를 연동할 수 있을까요? [8] file 2015.11.02 by 독도2005
마이웹 사이트메뉴 편집에 들어가면 에러가 나네요. [2] 2015.10.30 by 마이웹
XE러버 타임라인 모듈 최근 XE 패치 이후 [4] 2015.10.28 by XE러버
BJ람보 [XpressEngine] Slack 채팅방에 같이 참여하기!  
BJ람보 1.8.12으로 인해 ajaxboard의 Redirect 실행오류. [2] 2015.10.25 by BJ람보