XE 공식 자료실

제작자
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를 조합해 해시 값을 만들면 못 막죠. 그런데, 그럴 일은 거의....)
 
현재는 에디터에서 등록 버튼을 눌러야 content 필드가 업데이트 되기 때문에 등록 버튼을 두 번 눌러야 하는군요. 에디터의 content로 바로 md5 할 수 있는 방법을 찾으면 업데이트 하겠습니다.
 
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

로그인 후 작성할 수 있습니다.