content_count 48

img 태그를 이용한 CSRF 치환 애드온 버전 0.1.1(업데이트 버전)

free

0점 / 총 0명 참여
  • 구매자 0
  • 분류 애드온
  • 상품카테고리 애드온 
  • 상태 판매중 
  • 소개 이미 작성된 CSRF 공격 글에 대해 IE, FireFox, Chrome 브라우저의 HTTP ACCEPT 헤더 정보를 이용해 최대한 방어합니다. 
  • 설치경로 ./addons/soo_replace_content 
  • 버전 0.1 
  • 라이센스 MIT License 
  • 지원환경 XE1 
  • 개발자 misol 
  • 다운로드
    soo_replace_content.zip 2.29KB (잔여일 : -, 잔여횟수 : -)
File Name file_capacity residual_day residual_amount condition download
soo_replace_content.zip 2.29KB - - - download


설치 및 사용방법 

1) 다운로드 

soo_replace_content.zip


개요

<img>, <image>, <source>, <object>, <embed> 태그의 src 또는 href 속성을 이용한 CSRF 가 가능하다는 것을 알게 되었습니다.

최근 알게된 이 문제에 대해서 방어하는 애드온입니다. 조만간 XE Core 공식 업데이트가 있을 것이라 예상하지만, 그 사이에 있을 수 있는 공격을 예방합니다.

기능

  • 글 작성시 문제가 될 수 있는 <img> 요소를 무의미한 <span> 요소로 치환합니다.
  • 이미 작성된 CSRF 공격 글에 대해 IE, FireFox, Chrome 브라우저의 HTTP ACCEPT 헤더 정보를 이용해 최대한 방어합니다.

사용권

이 프로그램의 사용권은 MIT 라이선스를 따릅니다.

애드온 코드 정보

다음은 이 애드온의 핵심 코드입니다. 참고할 수 있도록 게시글에 포함합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?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|image|source|object|embed)[^>]+(src|href|data)\=[^>]+act\=(disp|proc)[^>]+\>([^<]*?\<\/(image|source|object|embed)\>)?/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;q=0.7,audio/*;q=0.6,*/*;q=0.5'//FireFox AUDIO
        '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();
    }
}
?>

 



옵션 검색
List of Articles
No. Category Subject grade point
공지 상품 커스터마이징 건에 대해서
공지 이온디샵에서 개발자/디자이너 여러분의 컨텐츠를 판매하세요.
공지 포인트샵 오픈마켓입니다. 구매를 원할 경우 포인트를 충전해주세요.
20 레이아웃 DoorWeb 레이아웃 B ver. 1.4 100P
19 레이아웃 링크모음 여기여기 반응형 레이아웃 (요기요기) 10,000P
18 레이아웃 [V0.1.3] 부트스트랩 기반 Gentelella 레이아웃 free
17 레이아웃 게임 홈페이지 레이아웃 100P
16 레이아웃 Equeer 레이아웃 1.4.5 (반응형 지원) free
15 레이아웃 ElaAmin For RXE 500P
14 레이아웃 Read Only 레이아웃 (v2.2) (다국어 버튼 추가) 150P
13 레이아웃 ROOT BASIC-반응형 free
12 레이아웃 Mh Justice Layout Free free
11 레이아웃 bootstrap DASHGUM 템플릿 free
10 레이아웃 XNS 레이아웃 - 기본 free
9 레이아웃 XNS 레이아웃 - Colorlib Tulen free
8 레이아웃 사이트선택 전용 레이아웃 100P
7 레이아웃 Editorial 레이아웃 (v0.5) 150P
6 레이아웃 Pure 레이아웃 v1.0.0-beta.2 free
5 레이아웃 [베타] Verti RX v1.0 11P
4 레이아웃 RPG GAME LAYOUT 300P
2 레이아웃 Aerial ComingSoon 레이아웃 free
1 레이아웃 Mobirise4 for RXE 판매종료 500P
닫기

마이페이지

로그인을 해주세요