RadarURL

조회 수 2090 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

제가 적용해보고 일주일 본 상태인데 1건도 스팸 등록되지 않았습니다.

당연히 스팸 공격이 자주당했던 곳을 비회원 작성으로 풀었는데도 입니다.

준비물

xe/modules/board/board.controller.php

xe/modules/editor/skins/스킨명/editor.html

사용하시는, 스팸 등록이 이루워지는 모듈의 에디터 스킨을 무엇으로 설정하셨는지 확인하신후 해당 폴더로 이동해서 editor.html 파일을 편집기로 엽니다.

제일 최상줄에 아래를 추가합니다.

1
<input type="hidden" name="{base64_encode($request_uri.date('Ymd'))}" value="Y" />


board.controller.php 파일을 편집기로 엽니다.

procBoardInsertDocument(), procBoardInsertComment() 함수를 검색합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* @brief 문서 입력
**/
function procBoardInsertDocument() {
// 권한 체크
if($this->module_info->module != "board") return new Object(-1, "msg_invalid_request");
if(!$this->grant->write_document) return new Object(-1, 'msg_not_permitted');
$logged_info = Context::get('logged_info');
// 글작성시 필요한 변수를 세팅
$obj = Context::getRequestVars();
/* 스팸 대응 2010.08.05 */
if($obj->{strtolower(base64_encode(Context::getRequestUri().date('Ymd')))} != 'Y') return new Object(-1, 'msg_not_permitted');
$obj->module_srl = $this->module_srl;
if($obj->is_notice!='Y'||!$this->grant->manager) $obj->is_notice = 'N';
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
* @brief 코멘트 추가
**/
function procBoardInsertComment() {
// 권한 체크
if(!$this->grant->write_comment) return new Object(-1, 'msg_not_permitted');
$logged_info = Context::get('logged_info');
// 댓글 입력에 필요한 데이터 추출
/* 스팸 대응 2010.08.05 */
$obj = Context::gets('document_srl','comment_srl','parent_srl','content'+
','password','nick_name','member_srl','email_address','homepage','is_secret','notify_message',strtolower(base64_encode(Context::getRequestUri().date('Ymd'))));
$obj->module_srl = $this->module_srl;
/* 스팸 대응 2010.08.05 */
if($obj->{strtolower(base64_encode(Context::getRequestUri().date('Ymd')))} != 'Y') return new Object(-1, 'msg_not_permitted');
// 원글이 존재하는지 체크
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($obj->document_srl);
if(!$oDocument->isExists()) return new Object(-1,'msg_not_permitted');


스팸 대응이라는 주석문 바로 밑에 것들을 추가 또는 수정하세요.

테스트는 위 내용을 모두 적용 후 캐쉬 재생성 하시고 테스트하려는 모듈로 가셔서 에디터 스킨을 위 내용 추가하지 않은 에디터로 임시로 바꾸세요. 그리고 로그인 상태로 글 등록을 하세요.

권한에 의한 오류 팝업이 나오면 성공입니다.

XML, BlogApi도 권한 오류를 내뿜습니다.

XML, BlogApi에서 본인의 홈페이지로 글을 써야겠다고 하시는 분들은 어쩔 수 없어요.

board.controller.php 수정 어려우신 분들은 첨부파일로 올려두겠습니다.

꼭 미리 기존에 있던 파일을 백업 받으신 후 덮어씌워주세요.

-- 2010.08 16 추가 --
-- 2011.05 09 수정 --

회원 가입 부분에도 추가합니다.

./modules/member/skins/스킨명/signup_form.html

id가 fo_insert_member로 되어있는 <form> 태그 바로 밑에 아래를 추가하세요.

1
<input type="hidden" name="{base64_encode($request_uri.date('Ymd'))}" value="Y" />

./modules/member/member.controller.php

procMemberInsert() 함수안에 스팸 대응이라는 주석문이 있는곳을 추가, 수정하세요.

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
/**
* @brief 회원 가입
**/
function procMemberInsert() {
if(Context::getRequestMethod() == "GET") return new Object(-1, "msg_invalid_request");
$oMemberModel = &getModel('member');
$config = $oMemberModel->getMemberConfig();
// before 트리거 호출
$trigger_output = ModuleHandler::triggerCall('member.procMemberInsert', 'before', $config);
if(!$trigger_output->toBool()) return $trigger_output;
// 관리자가 회원가입을 허락하였는지 검사
if($config->enable_join != 'Y') return $this->stop('msg_signup_disabled');
// 약관에 동의하였는지 검사 (약관이 있을 경우만)
if($config->agreement && Context::get('accept_agreement')!='Y') return $this->stop('msg_accept_agreement');
// 필수 정보들을 미리 추출
/* 스펨 대응 2010.08.13 */
$args = Context::gets('user_id','user_name','nick_name','homepage','blog','birthday','email_address','password','allow_mailing','find_account_question','find_account_answer',strtolower(base64_encode(Context::getRequestUri().date('Ymd'))));
/* 스펨 대응 2010.08.13 */
if($args->{strtolower(base64_encode(Context::getRequestUri().date('Ymd')))} != 'Y') return new Object(-1, 'msg_invalid_request');
$args->member_srl = getNextSequence();
// 넘어온 모든 변수중에서 몇가지 불필요한 것들 삭제

 

출처 : http://www.xpressengine.com/tip/19069968

?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 928120
2473 웹서버,WAS http를 https로 리다이렉트하는 여러가지 방법 JaeSoo 2025.09.10 0
2472 웹서버,WAS SSL인증서 없이 HTTPS에서 HTTP로 되돌리기 JaeSoo 2025.09.10 2
2471 웹서버,WAS [SSL] win-acme, Let's encrypt로 무료 SSL 인증서 발급 JaeSoo 2025.09.10 0
2470 웹서버,WAS [SSL] Windows 10에서 Let's Encrypt로 SSL 인증서 무료 발급받기 JaeSoo 2025.09.10 0
2469 웹서버,WAS 무료로 https SSL/TLS 인증서를 발급받을 수 있는 인증 기관 JaeSoo 2025.09.10 0
2468 웹서버,WAS 아파치 서버에 https SSL 인증서 적용하는 방법 (apache httpd) JaeSoo 2025.09.10 0
2467 웹서버,WAS 아파치2(Apache2) SSL HTTPS 적용하기 JaeSoo 2025.09.10 0
2466 웹서버,WAS 아파치 웹서버에 멀티 도메인에 대한 80, 443 포트 설정하는 방법 file JaeSoo 2025.09.10 0
2465 소프트웨어 Google Photo 대신 Immich를 써보자 file JaeSoo 2025.08.07 127
2464 연애 남자 혹은 여자 진국 팁 JaeSoo 2025.07.24 117
2463 기타 MBTI검사 16가지 유형 “간단 명료”하게 정리! file JaeSoo 2025.07.01 133
2462 소프트웨어 [사진관리] PhotoPrism vs LibrePhoto 비교 소감 JaeSoo 2025.05.19 14
2461 네트워크 MDF실, TPS실, EPS실 이게 뭘까? file JaeSoo 2025.04.15 33
2460 업무 알아두면 좋은 직장인 용어 정리 file JaeSoo 2025.04.15 37
2459 건강 감기·독감·코로나19의 차이점, 신촌연세병원과 함께 알아봅시다. file JaeSoo 2025.01.08 29
2458 생활 집주인이 전세 보증금을 돌려주지 않을 때 JaeSoo 2024.11.29 26
2457 자동차 자전거 타이어 종류 및 추천 2편 (승차감 타이어, 국토종주!) JaeSoo 2024.10.15 53
2456 자동차 오도바이 센타 사장들은 어떤 브랜드를 싫어하고 좋아할까? [출처] 오도바이 센타 사장들은 어떤 브랜드를 싫어하고 좋아할까?|작성자 바이크신 file JaeSoo 2024.10.15 78
2455 윈도우즈 윈도우 자동 로그온 설정이 보이지 않을 때 조치사항 JaeSoo 2024.08.16 203
2454 모바일 갤럭시S22 시리즈에서 SKT LTE 무제한 핫스팟 쓰는 방법! (SKT LTE 요금제만 해당!) JaeSoo 2024.08.12 234
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너