출장갔다온 동안 증식 -_- 해댄 답글들을 제거하고, 이후에는 이런 일을 최대한 막기 위해, 다음과 같이 WP를 변경
(아마도 WP용 폼에 맞춰서 답글을 생성하는 봇이 있는 것 같음)
- Form에 숨겨진 필드 추가 (cmd5 라고 id를 붙임)
- Submit할 때 java script에서 md5 sum을 계산하고 ( 의 코드 사용) cmd5의 숨겨진 값에 적어넣고 form 전송
- Server 쪽에서 commet를 처리하는 부분에서 미리 계산된 md5 checksum과 PHP의 md5 checksum 함수를 사용해서 계산한 결과를 비교함
- 두 개가 같은 경우에만 comment 허용
대충 이런 식으로 답글을 처리하기 시작했으니 이제 browser (그것도 java script가 되는)를 에뮬레이션 하는 수준의 로봇만 답글을 달 수 있을 거라고 믿고 있는 중 Orz
…삽질은 이걸로 끝난게 아니었음
일단 동아리 서버의 PHP는 UTF-8으로 인코딩된 문자열을 처리하고, 웹 브라우져들은 윈도우를 사용한다고 가정할 때, 아마도 뭔가 다른 인코딩으로 처리되는 듯함 (IE/FF다 같은 hash 값이 나온 것으로 보아)
그래서 해본 것이, 일단 utf-8 -> cp949로 전환해서 테스트: 실패 (값이 다르게 나옴)
이번엔 윈도우 내부 처리 방식인 UCS2로 전환해서 테스트: 역시 실패 -_-
도대체 웹 브라우져에서는 뭘로 인코딩을 해서 쓰는걸까? -_-;
(동일한 알고리즘 구현이란 것은 확인할 수 있었던게(사실 UCS2는 테스트할 이유가 없었던게), 영문자만 사용하면 (즉 ascii만 쓰면), ascii-compatible한게 보장되는 UTF-8 에선 서버/웹브라우져 양쪽에서 동일한 hash 값이 나온다는 것 -_-)
결론이 나왔음. 일단 내가 실수한 부분이 있었고 (java script에 인코딩 관련된 부분 (한 캐릭터 크기 관련)이 있었음), 이거 잡고나니 UCS2로 내부적으로 처리되는 문자열이 javascript 쪽으로 넘어간다는 것을 알 수 있었음. 그래서 서버에서도 이걸 emulation해서 넘어온 문자열을 UCS2로 되돌린 후에 md5 hash를 계산함
이제 문제점들은,
- 내부 문자열 처리가 2바이트가 아니면? -_- 어찌 꼬일지 모름
- 결국엔 OS 인식해서 내부 문자열도 추론해야할 판이라는 것?
- MS Windows 환경의 IE/FF는 둘다 잘 동작하는 것을 확인했는데, 지금 당장 쓸 수 있는 리눅스 머신이 없어서 리눅스 머신에서 글 쓰는 것은 테스트 못하는 중. 혹시 리눅스에서 안된다 싶은 사람은 MSN이나 hanirc의 #snucse나 기타 등등의 수단으로 알려주면 고맙겠음
수고하셨습니다 -_-)b
난 그냥 Akismet 플러그인 activate 시켜버렸는데 ;;
-_-;;
잘 살아 있기는 하구나~~
ㅋㅋㅋ
그냥 둘러봤다…
이젠 나도 제대를 앞뒀구나.. 11월 이지만…이젠 왕고이니… 휴~
ㅋㅋㅋㅋ
곧 휴가 나가면 연락하지..
ps: 내일 7월 8일 저녁 7시쯤??
kbs2에서 하는 스펀지에 아마 내가 나올듯 하도이다.
스펀지에서 새벽부터 밤새도록 촬영을 하고 갔는데 어찌 나올지는 모르겟네..
ㅋㅋ
휴가나오면 여기에 답글 달던가 전화하자. 나도 원룸서 혼자 살고 있는 상태니 하루쯤 재워주는건 큰 무리 없을 듯함