광고 스팸성 글을 안 보이게 숨겨서 올리는 것 필터링
그누보드로 제작된 사이트에 올라오는 요즘 스팸글 추세를 보니 예전처럼 대놓고 광고글을 올리는 게 아니라
정상적인 글처럼 올리고 광고글은 숨겨놓는 방법을 많이 사용하는 것 같습니다.
(위 스샷은 광고 글은 숨기고 정상적인 글처럼 위장해서 올라온 글을 소스 보기로 확인한 것입니다.
view 페이지에서는 광고 글은 숨김 처리되어 노출되지 않고 마지막 부분만 작성한 것처럼 올라옵니다.)
스팸글 패턴을 보니 요즘은 sound_only 클래스로 hidden 시키는 방법을 사용하더군요.
그누보드가 아닌 다른 솔루션을 사용한다면 그에 맞게 다른 class 도 이용하겠죠.
에디터 하단 탭에서 HTML 탭 누르고 직접 입력해보면 이해가 되실 겁니다.
이렇게 올리면 view 페이지에서는 "안녕하세요~" 글자만 출력되고 광고 글은 안 보입니다.
정상적인 글로 보여서 광고 글이라는 것을 전혀 인식하지 못하죠.
본인 사이트에서 직접 테스트를 해보세요.
광고 글은 직접적으로 안 보이는데 왜 굳이 저렇게 스팸글을 올리냐면 검색 포털 때문인 것 같습니다.
일단 검색 사이트에서 검색하면 저렇게 숨겨진 광고들도 그대로 노출됩니다.
그리고 본문에 관련 링크가 있으면 해당 도메인도 연관 사이트로 인식해서 같이 수집하게 된다고 합니다.
광고용으로 숨겨서 올린 도메인들의 검색 순위에도 일부 영향을 끼치겠죠.
갈수록 교묘해지는 수법을 사용하네요.
sound_only 클래스는 그누보드 메인 css 파일인 default.css 파일에 있습니다.
.msg_sound_only, .sound_only {display:inline-block !important;position:absolute;top:0;left:0;margin:0 !important;padding:0 !important;font-size:0;line-height:0;border:0 !important;overflow:hidden !important}
저 클래스는 삭제하면 안 됩니다. 그누보드 내에서 사용되는 곳이 꽤 많습니다.
해결 방법은 다양하게 있을 텐데 아래 내용은 입력 자체를 못하게 하는 방법입니다.
$filter_text = array('sound_only');
for ($i=0; $i<count($filter_text); $i++) {
$str = $filter_text[$i];
if (strpos($wr_content, $str) !== false) {
alert('내용에 금지단어('.$str.')가 포함되어있습니다.');
}
}
}