그럴싸한 단어까지 써가면서.. 요런 포스팅을 하는건
지금 내가 몹시 심심하기 때문이다 라는 전제를 붙이고 글을 써봄니다 ㅋㅋ

ipocs.com 게시판을 내가 만든게 아니라서.. 이전에 제작되었던 스팸 처리에 관한 어떠한 정보도 모르기 때문에..
새로 하나 만들어 보기로 했네여..

말은 뭔가 거창한 걸 한 것 같지만... 실로 간단한 작업이 아닐 수 없네여

일단 ipocs.com은 index.php와 index.php의 인자값을 변경 시켜주면서 각각 다른 페이지를 이동 할 수 있다.

ex)
index.php?p=home
index.php?p=member
index.php?p=board
index.php?p=pds

요런식이다.

인자값을 board로 하고 index.php을 실행하면 헤더페이지인 head2.php와 blist.php파일이 동시에 로드된다.
딱 보면 느낌이 오는데.. blist.php는 게시판 리스트 페이지이다.

스패머들의 공격루트는 다양한데...

첫번째는, blist.php로 접속을 하고 거기에 write나 post같은 유사한 단어의 페이지를 무작위로 찾은다음 글을 쓰는 방법.
두번째는, bwrite.php로 접속을 해서 각각의 textbox와 inputbox의 그럴싸한 글들을 적고 포스팅을 하는 방법.
세번째는, bwrite.php도 접근하지 않고 write_process.php라는 글을 DB에 게제하는 페이지로 접속해 바로 쿼리를 넘겨버리는 놈들도 있다.
네번째는, 무서운놈들인데 아싸리 index.php로 접속해서 미친듯이 게시판을 찾아내서 글을 쓰는놈들인데.. 이것들은 도대체 알 수가 없다.. ㅡㅡ

아마 이전의 스팸방지 시스템은 세번째방법을 차단해놓은 듯 싶은데.. 잘 모르겠다..

암튼 내가 요번에 구현을 해본건 다음과 같다.
" 게시판 스팸 글 막기 (Transaction의 유효성 처리) http://kldp.org/node/40076 "

사람이 인식할 수 없는 유일한 문자열을 MD5암호화 시켜 쿠키에 저장을 시키는 방식이다.

오호!.. 그럴싸하지 않은가!? 뭐 암호화 시키나 안시키나 별 상관은 없겠지만.. 그냥 있어보이니까!?..

bwrite.php에 실행과 동시에 쿠키에 암호화된 데이터를 삽입하고, input hidden 태그를 이용하셔 DB업데이트 페이지인 write_process.php로 암호화된 데이터를 넘겨준다.

write_process.php가 실행되면 쿠키에 있는 암호화된 데이터와, post 방식으로 넘어온 데이터를 비교해서 똑같으면 글쓰기 작업을 진행하고, 틀렸으면 에러메시지를 출력해준다.

느하하하.. 완벽하다고 싶었으나.. 스패머들은 정직하게 bwrite.php로 접근을 해서 글을 쓰는거라.. 그냥 삽질한거 였다 ㅡㅡ

그래서 ipocs.com을 접속하는 순간 쿠키를 생성하고 write_process.php에서 체크를 하도록 수정을 했더니..
오오오오 +_+ 스팸이 안 올라온다... 캬캬캬캬캬

기쁨도 잠시.. 왠 양놈들이ㅡㅡ 이제는 공지사항으로 스팸을 올리더라 ㅋㅋㅋㅋㅋ
얘네는 대체 무슨 방법으로 접근했는지 알 수가 없다..

리퍼러체크 해서 어떻게 접근했는지 좀 추이를 지켜봐야겠다..
그래도 한국발 스팸들은 안올라오니 대충은 해결된듯 -_-v

코멘트 역시 똑같은 방식으로 차단을 했더니.. 짱이다 ㅋㅋㅋㅋ

오랜만에 PHP를 만져서 그런지.. 재밌네

잊지 말아야 될 것들

쿠키생성 및 데이터 암호화
$token = md5(uniqid(rand(),1));
setcookie("변수",$token,0,"/","");

쿠키에 저장된 데이터 사용하기
$HTTP_COOKIE_VARS[변수]
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
2008/07/19 21:19 2008/07/19 21:19