포럼
스팸글에 대해 어떻게 막을까 고민해 봅시다.
2013.06.20 19:39
그냥 제 생각일 뿐입니다.
혹시 제가 틀린말을 하더라도 너그러이 양해 바라며 해당 내용을 지적해서 고칠수 있도록 해주시면 좋겠습니다.
일단, 현재 글 등록 부분은 외부 스크립트에서 글 등록이 사실상 가능하다고 봅니다.
세션에 로그인 정보를 넣어 놓은 상태로 글 등록 함수 실행 시 manual 을 true 로 해주면 되는데 문제는 회원 가입이라고 생각합니다.
회원 가입이 자동적으로 가능하다는 것입니다.
이를 방지하기 위해 캡차니 이메일 인증이니 여러가지 동원하고 있지만 잘 안되는것 같습니다.
저렴한 제 생각으로는
뭔가 글 등록 프로세스에 그때그때 유동적인 token 같은것이 필요한게 아닌가 생각됩니다.
거창하게 OAuth 시스템을 이야기하는건 아니고,
예를들면 현재 date('His') 값과 암호화되어있는 admin 의 비밀번호값을 그대로 가져와서 다시한번 sha1() 처리해 준 것을 가입 폼에 hidden 으로 추가해 주고 이 값을 회원 가입 프로세스가 진행될때마다 체크하는 방식입니다.
그냥 쉽게 말해 시시각각 변하는 체크 변수를 하나 더 놓자는 뜻입니다.
외부 프로그램으로 선량하게 홈페이지 주인이 스스로 뭔가 운영하기 위해 프로그램을 만들때는 그 비밀번호 값을 갖다가 쓰면 되지 않을까 생각됩니다. 본인의 것이니까요.
단, 외부에서 xe 코어 작동 원리만 아는 사람이 회원 가입 자동화 프로세스를 개발한다면 해당 홈페이지의 비밀번호 변수를 모르기 때문에 좀 난해해 지지 않을까 생각됩니다.
저는 고급 개발자가 아니므로 이런 스크립트성 꼼수를 좋아라 합니다.
어떻게 생각하시나요?
댓글 21
-
퍼니엑스이
2013.06.20 22:37
-
푸시아
2013.06.21 13:52
그럼 차라리 index 부분에서 처리하는게 좋아 보이네요!
-
BluesPia[꾸야]
2013.06.23 22:46
사실상 도배프로그램은 막는게 거의 불가능해보입니다....
스누피 라는 PHP 클래스 써보시면 Client측 정보를 모두 조작하고 글등록하는 코드만 짜주면 완전히 사람이 쓰는것과 같이 만들수 있거든요... -
푸시아
2013.06.24 01:16
스누피를 이용한다면 이메일 인증이나 핸드폰 인증은 뚫을 수 없어 보입니다...
-
jahong
2013.06.27 01:33
매일 특정시간에 배치프로그램을 돌려서 같은글이 발견되면 자동삭제하도록 클린프로그램으로 관리하는게 어떨까요. 패턴을 등록해두면 되고 만든놈즐도 패턴피할라고 머리써서 프로그램수정할텐데 그때그때 대응해도 되지않을까요? -
푸시아
2013.06.27 02:07
오.. 좋은 방법인것 같은데요?
새로운 스팸방지법이 될 것 같습니다.
-
혼ME
2013.06.27 19:50
본문에 나와있는 내용이 매크로 차단에 가장 기본적인 부분이 아닐까 싶습니다.
하지만 역시 파싱으로 미리 값을 취득하는게 문제군요.
-
Root
2013.06.28 19:02
XE는 아니지만 http://ncafe.kr/free-write.xml 요런 방법도 있습니다ㅡ;
-
푸시아
2013.06.28 19:09
아쉽게도 접근이 안되네요..
-
Root
2013.06.28 19:10
그냥 게시판 들어가서 쓰기버튼 누루시면 보일꺼에요 ;;; 레퍼럴 차단이라 바로 접속은 안되네요;;
-
푸시아
2013.06.28 19:10
아 그냥 커뮤니티 글쓰기 버튼 누르는거군요~
-
푸시아
2013.06.28 19:22
아하... 비밀번호 넣는 부분이 처음부터 있는게 아니라 마우스로 클릭을 해야 나오는걸 말씀하시는건가요?
-
Root
2013.06.28 19:28
그러쵸; 뭐 완벽이란것은없지만 그래도 지능이하인 봇에게는 먹힙니다;;(1년이넘도록 정상이니ㅋ;)
-
푸시아
2013.06.28 19:34
좋은 말씀 감사요. 애드온 같은 것으로 한번 되는지 봐야 겠네요 ~
-
푸시아
2013.06.28 20:56
음, 그런데 지금 문제가 xe 는 비회원의 경우 캡챠도 뚤리고 회원가입시 메일인증이나 핸드폰인증도 뚤린다는것이 심각합니다.
단순히 php 파싱 같은 것으로 form 을 조작하는게 아니구요. 아마도 act 값을 직접 호출하는 방식에다가 옵션값들을 동봉해서 전송하는것 같아요. curl 같은 방식으로요. 이럴 경우 창을 ajax 같은 방식으로 input 을 노출하고 안하고는 의미가 없지 않나 생각됩니다. 흐음......................
-
Root
2013.06.28 21:40
맞습니다^^; input 노출이 단순히 보였다안보였다하면 당연히 큰 의미가 없겠죠..;; 그럴거였으면 제가 사용하지도 않았구요..
-
푸시아
2013.06.28 22:26
xe 용으로 팁한번 알려 주세요~
-
BluesPia[꾸야]
2013.06.29 22:18
XE 개발팀 선에서 건들게 되면 어차피 해커가 뚫고 툴도 나오겠죠....
각자의 사이트는 각자의 독특한 방법으로 막는게 좋을듯 싶습니다...
윗분같이 input의 display 속성만 바꿔주는건 별 효력이 없을듯 한데....
-
criuce
2013.07.01 21:51
결국 푸시아님이 말씀하신 csrf가 최선인 것 같아요.
-
큐트양
2013.08.17 09:10
예전에 제가 쓰던 방식인데요..글을 DB에 insert 하기 전에 referer 확인하고.. referer가 외부 주소에서 된것은 등록을
거부하는 방식으로 했었는데.. 꽤 효과가 있었어요.. 비회원 게시판인데도 스팸 게시물이 거의 없었어요. 여기에다
사이트 접속하는 모든이에게 쿠키든 세션이든 어떤 값을 부여합니다.. insert 전에 이 쿠키값이이나 세션값이 있는지
확인을 합니다... 이렇게해서 몇년간 방치했던 게시판인데도 스팸글 거의 없습니다.
http://orangeville.co.kr/board.php?DB=free
여기 광고성 게시물들도 직접와서 남긴 것들일 겁니다.
-
푸시아
2013.08.17 15:30
애드온이나 트리거 모듈을 이용할 수 있겠네요~
좋은 것 같네요. 다만, 관리자 비밀번호보다는 XE 설치 시 임의의 해쉬값을 발급해놓고 그것을 가져다 쓰는게 좋지 않을까? 생각합니다.
생각해보니까 이 방법은 금방 뚫릴지도 모르겠다는 생각이 듭니다. 글쓰기 화면을 긁어온다음 hidden 값을 가져다가 글쓰기를 시도하면 그만 아닐까요?