스팸을 막기위한 약간의 노력들


한두개에서 많아야 6개정도 등록되던 스팸이 점점 늘어나기 시작하는군요. 물론 스팸 플러그인(akismet)에서 모두 걸러지긴 하지만, 매번 관리페이지 들어가서 확인하는것도 귀찮고 스팸등록될때마다 메일로 통보되는것도(설정에서 기능을 껐는데도) 귀찮아서 애초에 스팸 리퍼러들의 접근 자체를 막아버리는 방법을 찾아보니 꽤나 다양한 방법들이 있더군요.

글들이 많은 만큼 그들이 나열해 놓은 스팸 리퍼러들도 엄청나게 많고, 그걸 일일히 다 적용해 봤자 스패머들은 이렇게 저렇게 방법을 바꾸고….. 결국 뚜렷하게 스팸을 완전히 막는 방법은 없다고 봐야겠다는 결론이 내렸습니다.:|

그래도 마냥 내버려 둘 수는 없으니 몇가지 간단한 대책은 적용해야죠.:(

  • 1. 우선 확실한 스팸 리퍼러는 .htaccess파일에서 접근을 막았습니다.
  • 2. 제 블로그가 아닌곳에서 원격으로 등록한다고 판단되는 코멘트를 튕겨냈습니다.
  • 3. 그 외에도 등록되는 스팸을 앞으로 정리하기위해 ‘akismet’은 일단 계속 사용합니다

1, 2번의 방법은 워드프레스의 CODEX페이지에 있는 을 참고해서 ‘.htaccess’파일에 스팸관련 내용을 추가했습니다.
[spoiler ‘blind”.htaccess 수정내용 보기”수정내용 감추기’]

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.mydomain.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]

RewriteCond %{HTTP_USER_AGENT} Indy.Library [NC,OR]
RewriteCond %{HTTP_USER_AGENT} TrackBack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Crazy\ Browser [NC]
RewriteRule .* - [F]

# block ips (123.456.789라는 아이피는 임시로 적어놓은 것입니다. 자신에 맞게 바꿔야 합니다.)

order allow,deny
deny from 123.456.789
allow from all

# block spam trackback (from http://spamhuntress.com/)

  
SetEnvIf User-Agent "Mozilla" trackers
SetEnvIf User-Agent "Opera" trackers
SetEnvIf User-Agent ^$ trackers
Order Allow,Deny
Allow from all
Deny from env=trackers


# END SPAM BlackList

[/spoiler]
위 코드중에서 RewriteCond %{HTTP_REFERER} !.mydomain.com.* [OR]에있는 ‘mydomain.com’은 “http://“, “www.“, “서브도메인” 이 붙지않은 순수한 도메인이어야 합니다. 예를 들어 “http://abcd.mydomain.com” 의 경우에는 “mydomain.com“만 적어주어야 하는거죠.

추가적으로 wp-comments-post.php파일의 맨위에 아래 코드를 넣었습니다.


위 코드중에서

부분은 스패머들 중에서 대상 블로그(사이트)의 도메인을 자동으로 읽어들여서 $_SERVER['HTTP_REFERER']인척 하게하는 스패머 때문에 추가한것입니다. 사실 '.htaccess' 파일에서 정의한 내용과 거의 유사하지만 이부분때문에 wp-comments-post.php에 코드를 넣은것입니다. 어짜피 워드프레스에서는 메인페이지에서는 코멘트를 남길 수가 없으니 문제는 없을거라 생각되네요.

어제 오늘 '스팸머 막기' 때문에 이것 저것 건드리다보니 댓글 등록할때 오류가 발생하는일이 종종 있었네요. 혹시 그 사이 댓글을 올리시려다 오류화면을 보신분들께는 죄송합니다^^;

이제 어느정도 설정을 적용해봤으니 몇일정도 스팸상황을 지켜보는일만 남았네요.


5 responses to “스팸을 막기위한 약간의 노력들”

  1. 스팸때문에 고민인 사람이 저뿐만 아니라 많이 있군요. 여기서 아는 사람(bigevent)의 질문까지 보게 될 줄이야.:)

    저도 일단 wp-comments-post.php에 코드를 추가해봐야겠네요.

  2. 질문이 있어서 그러는데요 위 코드는 다른 일반 게시판에도 적용할 수 있나요 ..저도 코멘트에 달려지는 스펨때문에 골머리를 썩고 있거든요..
    그리고 워드프레스는 원래 코멘트가 항상 다른 페이지에서 달리는 건가요?
    예를들면 테터툴스처럼 코멘트버튼을 누르면 toggle 형식으로 들어갔다 나왔다 하는 스킨은 없느지요.
    처음와서 질문만 많이 하구 가서 죄송합니다..^^
    감사합니다.

  3. unfusion// 이번에 이런 저런 검색을 하다 알게었는데, referrer karma 라는 php프로그램이 .htaccess를 요구하지 않는것 같더군요. 한번 확인해보세요. 아니면 간단하게 제가 적용한 wp-comments-post.php에 코드를 추가하는 방법도 괜찮을듯 합니다.;)

  4. 저도 스팸 때문에 골머리를 썩고 있기는 한데 .htaccess를 이용한 방법이 그림의 떡이라 적용하지 못해보겠네요:(askimat 잘 막아주고는 있지만 가끔 들어가서 쌓여 있는 스팸 지우는 것도 귀찮아지기 시작했습니다. 다른 플러그인도 좀 찾아봐야 할 것 같네요…