우리 학회 홈페이지에 인증 없이 글을 쓸 수 있는 게시판이 있는데,
여기에 스팸글이 엄청나게 올라온 일이 있었다.

출처 : www.spamdeputy.com 개 놀랬다... 열받는다고 개를 쏠 수는 없는일...
그 글들은 spam bot 이 올리는 경우가 대부분이고
한번에 같은글이 3~4개씩 올라 오곤 했다. (이런 나쁜시키들...... -_-)
기존 우리 홈페이지에서 스팸 필터링 하는 방법은, 관리자가 스팸글에 대해
스팸 등록을 하면, 그 글을 등록한 IP 주소의 접근을 차단하는 방식 이었다.
그런데 ... 역시나 우리의 스팸봇은 IP 주소를 신나게 바꾸면서 달려 들었다.
게으른 서버 관리자 귀천 은... 스팸이 올라오면 확인하면서 스팸 처리하는게
더 귀찮아 지자 조금 생각을 해 보았다.
그런데..........................
코드 몇줄이면 스팸 처리를 무난하게 할 수 있다는걸 깨달았다.
=> 대부분의 스팸들은 공통적인 keyword 를 가지고 있기 때문에 그 keyword 가
들어오면 글 올리는것을 방지 하는 것 이다. 게다가 본문도 아니고, 그냥 제목에 대해서만
스캐닝 한다고 할지라도 스팸 차단률은 생각보다 매우 뛰어나다.
지금 스팸 키워드는 약 100개쯤 등록해 뒀는데,
정말 가끔 스팸이 올라오면, 확인해 보고 스팸 키워드 몇개 등록하면 된다. 후훗...
그래서 quick & dirty 코드를 몇줄 작성했다.
뭐 이래서 is_valid_title(“여기에 스캐닝 할 문자열들, 제목이던 본문이던 알아서...”) 해서
boolean 값 가지고 스팸 인지 아닌지 판단하면 된다.
좀 이상한건 gettype(mb_stripos($title, $word)) == “integer” 인데 mb_stripos 함수는 리턴값이
참.......... 제멋대로라 저런 식으로 코드를 썼다. $word 가 $title 에 존재하지 않으면 false 를
존재하면 그 존재하는 위치의 offset 값을 integer 로 리턴한다.
뭐 암튼..... 결론적으로 매우 경제적이고(?) 쓸만하다.

글
댓글을 달아 주세요
댓글 RSS 주소 : http://maya.jaram.org/blog/bth/rss/comment/8댓글 ATOM 주소 : http://maya.jaram.org/blog/bth/atom/comment/8