그러냐

xe 스팸방지 팁 본문

php

xe 스팸방지 팁

관절분리 2016. 1. 25. 14:35
반응형

출처 : https://www.xpressengine.com/tip/22279567


나름 강력할 것 같은 스팸방지 팁

2013.08.23 13:08

꿈섬 조회 수:5641

요즘 스팸때문에 고민인 분들이 종종 보이네요.

회원만 글쓰기 하면 뭐 문제 없겠지만, 비원글쓰기 인경우 스팸테러의 우려가 있지요.

개인적으로 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");  
반응형