본문 바로가기
프로그래밍/PHP

스팸글 방지법

by 백룡화검 2010. 4. 23.

 방문자도 별로 없는 제 홈피에 자꾸 스패머들이 들어와서 몇개월전에 스팸처리를 했는데 그 방법이 꽤나 유용한듯해서 올립니다.

참고로 제 홈페이지는 PHP에 제로보드4 이용했습니다.



아래는 제가 실패했던 스팸처리 방법입니다.

1. 게시물 작성시에 랜덤 숫자값 준후 글입력페이지에서 그 숫자값 체크
2. 랜덤값중에서 몇개의 글자만 빨간색 줘서 그 빨간색 글자만 입력하게 함
3. 글작성페이지에 세션값 생성한후에 글입력페이지에서 그 세션값 있으면 글 입력
4. 이미지로 처리하는 방법은 생각만 하다 귀찮아서 관둠 -_-;;
5. 제로보드4에 있는 광고글방지 필터링 이용(별 효과 없음 -_-)

이렇게 몇가지 처리를 해줘봤는데 몇일 지나면 다시 스팸글들이 등록되더라고요 -_-;
몇가지 스팸처리 실패로 얻은 결론은 이색히들은 로봇이라는 겁니다.(물론 로봇이 스팸글 등록한다는것 다 아시겠지만 -_-)

그래서 아주 간단하게 아래와 같이 처리해줬습니다.
일단 히든 폼 값하나 생성하고 textarea의 onfocus 에 스크립트처리 했습니다.

<input type="hidden" name="focus_info">
<textarea name="memo" onfocus="frm.focus_info.value='yes'"></textarea>


이렇게 하면 글 입력란을 사용자가 클릭이나 탭키로 이동하면 onfocus 이벤트가 먹히므로 focus_info의 값이 yes로 바뀌게 됩니다. 로봇의 경우에는 웹상에서 접근해서 글을 남기는게 아니기 때문에 onfocus 이벤트가 작동하지 않을겁니다(아마도.. 확실치는 않음 -_-)

이렇게 해서 글 입력하는..예를 들자면 write_ok.php 쪽에

if ($focus_info != "yes") {
    echo "야이 개념없는새퀴 고만좀 등록해라!";
    exit;
}

요런식으로 폼의 focus_info 값을 검사해서 yes 인 경우에만 글 등록하도록 처리했습니다.
몇개월 이렇게 사용하는데 스팸글 등록 안되고 있습니다. 훗~!


사실 처음엔 onfocus대신에 onclick로 처리했었는데 어떤분이 onfocus도 어떠냐고 해서 어제부터 onfocus로 바꿨는데 아직까지 스팸글 등록 안되네요.

물론 이런 처리 방법을 스패머색히들이 읽고 프로그램 고친다면 무용지물 되겠지만... -_-;

 

출처 : PHPSCHOOL