Wiki Spam

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS
위키 스팸을 어떻게 막을 것인가.

이메일, 게시판, 블로그 스팸에 비해선 공격 강도가 약한 편이긴 하지만, 적지않은 WikiGardening 낭비를 초래하고 있다.

YouNeedToLogin을 적용해도 스팸공격이 들어오곤 한다.

노스모크모인모인에는 급한대로 Page.py에 save_text 함수에 다음 코드를 추가해서 금지어가 들어있으면 페이지 저장을 하지 않는 식으로 땜빵을 했다. 아주 간단하게.
        for word in config.forbidden_word:
            if newtext.find(word) != -1:
                msg = "Prohibited Strings"
                break

forbidden_word = ('some_common_string', )

위의 두 코드의 위치가 어디어야 하는지 좀 자세하게 설명해 주실 수 있나요?
word 찾는 부분은 이 부분에 추가하고...
         
            newtext = string.replace(newtext, "\r", "")
            msg+='<textarea wrap="virtual" rows="25" cols="80" style="width:100%%">'+newtext+"</textarea>"
        
            for word in config.forbidden_word:
                if newtext.find(word) != -1:
                    msg = "Prohibited Strings"
                    break
forbidden_word는 moin_config.py의 basic options 아래에 추가 했습니다.
 # basic options
forbidden_word = ('viagra', ) 

그런데 별 반응이 없는 것 같아요... --happycoat



금지어는 moin_config.py에서 위와 같이 리스트로 설정. 금지어는 새로 발견하는대로 계속 추가해줘야함. 위키스팸들이 대개 공통된 호스트를 쓰는 링크를 다량으로 페이지에 쑤셔넣으므로 스팸 URL의 공통되는 부분을 금지어로 설정하면 됨.

노스모크를 포함해 위키 세 곳에 적용 후 한달 가량 지켜봤는데, 그럭저럭 효과가 있었다. 한번 당한 스팸에 다시 당하는 일은 없었음. 오리지널 모인모인의 최근 버전에서는 이를 좀더 지능적으로(InterMap처럼 스팸금지어 페이지를 두고, 정규식도 지원하는) 처리하는 듯한데, 아직까지는 이정도 단순한 코드로도 비용대효과면에서 쓸만한 듯. 장기적 안목으로 보자면 다른 세련된 해법이 필요하긴 할 것임.
--희상






"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>