포럼

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람보 카르마님의 통합검색 확장모듈. [9] file 2015.09.20 by 로파이
KOTRA1 1.7 버전대 사용중인, 코어 커스텀 많이 해두신분들은 1.8 버전으로 업데이트 하실 생각 마시길.. [16] 2015.09.24 by KOTRA1
마이웹 요즘 웹개발환경이 또한번 바뀌는듯 하군요. [8] 2015.09.26 by 마이웹
prologos 외부 이미지의 썸네일 생성방식 변경 [16] 2015.09.30 by SUHONE
가을풍경 쇼설 네트워크 WALL 플러그인 소개 [1] 2015.10.05 by Ikoo
RedLan EZMember 개발 방향 [13] 2015.10.06 by 큰성565
트로" Xe 카메론에서도 블랙프라이데이에 참여하네요. [5] 2015.10.06 by 파파민
happyclo 준 오픈 마켓 사이트 개발.. XE vs 그누보드 [18] 2015.10.07 by 열혈개발
꾸링 SEO 최적화 - 크롤러들은 redirection을 싫어한다 Yes or No [3] 2015.10.07 by Luatic™
delphiXE2 XE3이 어떤 모습일지 기대가 큽니다. [2] 2015.10.07 by XE
레몬시 이 사이트도 XE로 만들어진 사이트인가요? [2] file 2015.10.07 by misol
BJ람보 [BJRambo] XpressEngine 위젯강의 [1] 2015.10.13 by BJ람보
배워서남준다 XE에서 사용하는 아이콘들을 모아봤습니다. [4] file 2015.10.13 by 참치.k
배워서남준다 카페XE 에서 관리자 권한 문제에 대해서... [9] 2015.10.15 by 이온디
misol 제가 문제를 일으킨 코드를 걸러내는 애드온입니다. file  
가을풍경 XECon2015 에 같이 가실 대구분 없나요?  
newi nginx 1.9.5 버전 괜찮은 가요 ? [1] 2015.10.16 by 기진곰
배워서남준다 가상 사이트 어떻게 사용하고 계시나요? [14] 2015.10.17 by 배워서남준다
배워서남준다 모든 POST 요청은 checkCSRF()를 통해 referer 검증 등의 절차를 거칩니다.  
미니룹 비용을 들여서라도 플래닛 모듈을 업그레이드 해볼 생각입니다. [2] 2015.10.18 by 키스투엑스이