XE 공식 자료실
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
현재는 에디터에서 등록 버튼을 눌러야 content 필드가 업데이트 되기 때문에 등록 버튼을 두 번 눌러야 하는군요. 에디터의 content로 바로 md5 할 수 있는 방법을 찾으면 업데이트 하겠습니다.
- 제작자
- suritam9.myid.net
- 등록일
- 2014-05-05
- 다운로드 수
- 776
- 링크1
- suritam9.pe.kr
패킷을 생성해 자동으로 입력하는 글을 방지합니다.
- 라이선스
- 기타 라이선스
- 설치경로
- ./addons/autodeny
- 최초 등록일
- 2014-05-05
- 전체 다운로드
- 776
체험하기
쉬운설치로 바로 체험할 수 있습니다
상세 설명
세션 값과 content를 조합해 md5 해시를 생성하고, 입력 필드로 받습니다.
php 에서도 같은 방식으로 생성해 임의 세션도 차단 됩니다.
$ss=session_id();
$cb=Context::get('autoflag');
$ct=htmlspecialchars_decode(Context::get('content'));
$ct=str_replace("\r\n","",$ct);
$ct=str_replace("
","",$ct);
$ct=str_replace("","",$ct);
$ct=trim($ct);
$cb_base64=$ss.base64_encode($ct);
$cb_md5=md5($cb_base64);
자동으로 임의 세션을 통한 글쓰기를 방지합니다.(물론 조작 세션과 content를 조합해 해시 값을 만들면 못 막죠. 그런데, 그럴 일은 거의....)
document.getElementsByTagName("iframe").item(0).contentWindow.document.body.innerHTML 을 이용해, 버튼을 한번만 눌러도 되는군요.
옵션과 사용자에 의한 별도 입력이 없는 게 장점입니다.
$output = str_replace('', '', $output);
$output = str_replace('', '', $output);
등록 버튼과, 댓글 등록 버튼 앞에 입력 필드를 replace로 넣어 해당 부분이 다르면 필드가 나오지 않습니다. 스킨이나 버전에 따라 확인하셔야 될 듯 합니다.
1.7.3.4 에서 테스트 되었습니다.
테스트 과정에서 내용이 아예 없는 항목에 글에대해서는 유효하지 않는 것을 발견 했습니다. 그 부분을 해결하기 위해서 xe가 설치된 경로의 /modules/board/tpl/filter/insert.xml 경로의 minlength를 수정해 줬습니다. contents가 없어도 등록을 가능하게 한 xe의 정책에 의문이 드는군요. 암튼, 내용이 없는 공격이 가능한 것 까지 파악한 스패머들은 대단하군요.
<node target="content" required="true" minlength="1" />
포럼 0
로그인 후 작성할 수 있습니다.