워드프레스의 스팸코멘트 처리.

By | 2005-04-01

무차별적으로 쏟아지는 스팸코멘트는 무시해버릴수도 없고, 그렇다고 피해갈 수도 없는, 설치형블로거에겐 운명과도 같은 것입니다. 기본적인 스팸 방어도구는 제공되지만 스패머들은 그 도구의 빈틈을 뚫고 들어오거나 새로운 방법들을 개발해서 우리 블로그에 광고를 퍼붓습니다.
조금전 데이타베이스를 점검하다보니 스팸코멘트가 잔뜩 들어와 쌓인것을 발견했습니다. 거의 다 온라인 도박업체의 광고였습니다. 얼추 3백개 정도 쏟아져 들어온것 같습니다.
스팸코멘트들

그러나 이 코멘트들이 제 블로그에선 보이지 않았는데 그 이유는 관리자 메뉴에서 예전에 스팸으로 간주할 코멘트에 포함될 단어목록에 poker를 넣어놨기 때문입니다. (설정(Options)-> 의견나눔(Discussion)-> 답글차단목록(Comment Blacklist))
코멘트 스팸 설정
여기에는 완전히 스팸코멘트가 확실한 단어만을 넣는 것이 좋습니다. 여기에 해당되는 단어를 쓰게 되면 데이타베이스에 들어가서 뒤져보지 않는 이상은 방문자는 물론 블로그 운영자도 찾을 수 없게 처리되기 때문입니다.
그보다 한단계 약한 스팸차단은 답글차단목록 바로 윗항목인 “답글조정 목록(Comment Moderation)”에 단어를 넣으면 됩니다. 이 경우 블로그에서는 보이지 않지만 관리자메뉴(관리->조정이 필요한 답글(Awaiting Moderation))에서 확인이 가능하고 여기서 해당 코멘트를 차단할것인지 아니면 정상코멘트로 처리하여 블로그에 보여줄 것인지를 결정할 수 있습니다.
스팸처리된 코멘트들이 데이타베이스에 쌓여있으면 이제 이것들을 삭제해주어야하는데 데이타베이스 웹브라우저로 쉽게 관리해주는 툴인 phpMyAdmin을 추천합니다. 직접 설치하셔도 되지만 아마 웹호스팅업체의 관리메뉴에서 사용할 수 있도록 미리 설치해둔 경우가 많습니다. 이 프로그램은 데이타베이스를 관리하고 수정할 수도 있지만 버튼 하나로 모든 데이터를 날려버릴 수도 있기때문에 사용법을 반드시 익힌 다음에 사용하셔야 합니다. 이 프로그램에서 직접 SQL 서버에 명령을 실행시킬 수 있는데 phpMyAdmin 2.6.1-pl3 버젼을 기준으로 왼쪽메뉴에서 DB이름을 누르고 오른쪽 메뉴에서 SQL이라는 메뉴를 누르면 “데이터베이스 —에 SQL 질의를 실행: ” 이라는 입력칸이 나옵니다.
SQL쿼리문 입력
여기에 DELETE FROM wp_comments WHERE comment_author_url REGEXP “스패머가 남긴 URL”; 이라고 입력합니다. 이 글의 맨 앞쪽에 넣었던 그림을 예로 든다면 DELETE FROM wp_comments WHERE comment_author_url REGEXP “texas-poker”; 라고 넣으면 되겠습니다. hurd님은 DELETE FROM wp_comments WHERE comment_author_url LIKE ‘%텍스트%’; 로 하는 편이 더 일반적인 방법이라고 알려주셨습니다. 물론! 당연히! 반드시! 데이타베이스 백업을 받은 뒤에 실행을 하셔야 합니다.
SQL쿼리 결과
텍사스-포커에서 온 총 13개의 스팸코멘트가 데이타베이스에서 지워졌군요. 많이 보이는 주소들의 규칙이 있으니 디비에 좀 쌓였다 싶으면 한번씩 청소해주시면 되겠습니다. 스팸코멘트를 효율적으로 막고 디비에서 삭제를 간편하게 해주는 플러그인이나 hack중에서 쓸만한 넘을 찾아보는 것도 괜찮겠습니다.

5 thoughts on “워드프레스의 스팸코멘트 처리.

  1. 김용호

    DELETE FROM wp_comments WHERE comment_approved REGEXP “spam”
    이 더 직관적이지 않은가요

  2. hof Post author

    REGEXP와 LIKE에 대해서 얘기하신거라면 모르겠지만 comment_approved 가 spam인것을 지우는 것은 위험합니다. 간밤에 이 글쓰면서 저도 테스트로 제 스팸들 지워봤는데 전 코멘트 작성자가 입력한 url ( comment_author_url )에서 찾아 지웠거든요. poker, parm, casino, online- 등으로 찾아서요. 그런데 spam으로 기록된 코멘트중에 하나가 스팸이 아닌게 있더라구요. http://hof.pe.kr/1023#comment-3345 이것인데요. 이게 스팸으로 처리되어 있더군요. 이유는 아직 모르겠습니다. 그리고 REGEXP하고 LIKE는 저도 정확하게는 모르겠는데 LIKE는 표준 SQL문법이고 REGEXP는 정규식을 쓸수 있어서.. 어떻다고 하는데;;; 자세한 내용은 다음분께 패스;

  3. 김용호

    네, 전 comment_approved vs comment_author_url 의 차이에 대해서 말씀드리고자… 음, 가끔 스팸으로 구분된 것이 있긴 하지요. 그렇다면 search -> comment_approved=spam 해서 view 100 entries 정도 해서 훑어본 후 select all -> delete 는 어떨까요? 아무래도 하나 하나 지우는 것은 한계가 있을 듯 해서요.

  4. Pingback: dream and works. » Blog Archive » spam referer를 정리하자

Comments are closed.