웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
나름 강력할 것 같은 스팸방지 팁
2013.08.23 13:08
요즘 스팸때문에 고민인 분들이 종종 보이네요.
회원만 글쓰기 하면 뭐 문제 없겠지만, 비원글쓰기 인경우 스팸테러의 우려가 있지요.
개인적으로 captcha 방식은 싫어해서.. 다른 방법을 생각해 봤구요..
소스 수정입니다.
1. 회원 자동가입방지
/modules/member/member.controller.php
이 파일을 에디터로 엽니다.
procMemberInsert()이 함수를 찾기 기능으로 찾습니다.
빨간 글쓰 부분 추가 하면 됩니다.
이것은 referer 확인해서외부에서 파싱하는 것을 막아 줍니다.
function procMemberInsert() {
if (Context::getRequestMethod () == "GET") return new Object (-1, "msg_invalid_request");
if(!strstr($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME'])) return new Object (-1, "msg_invalid_request");
$oMemberModel = &getModel ('member');
$config = $oMemberModel->getMemberConfig ();
2. 자동 글쓰기 코멘트쓰기 방지
/modules/board/board.controller.php
이 파일을 열어서
procBoardInsertDocument() 와 function procBoardInsertComment()함수를 찾아서 똑 같이 해줍니다.
function procBoardInsertDocument() {
// 권한 체크
if($this->module_info->module != "board") return new Object(-1, "msg_invalid_request");
if (Context::getRequestMethod () == "GET") return new Object (-1, "msg_invalid_request");
if(!$this->grant->write_document) return new Object(-1, 'msg_not_permitted');
if(!strstr($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME'])) return new Object (-1, "msg_invalid_request");
========================================================================================================================
function procBoardInsertComment() {
// 권한 체크
if (Context::getRequestMethod () == "GET") return new Object (-1, "msg_invalid_request");
if(!strstr($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME'])) return new Object (-1, "msg_invalid_request");
if(!$this->grant->write_comment) return new Object(-1, 'msg_not_permitted');
$logged_info = Context::get('logged_info');
=======================================================================================================================
php. 5.3.0이상의경우는 빨간부분 추가해야 합니다.
if(!strstr($_SERVER['HTTP_REFERER'],$_SERVER['SERVER_NAME'],true)) return new Object (-1, "msg_invalid_request");