기존 글과 중복 문서(유사 문서)로 분류되지 않도록, 문맥과 표현을 완전히 새롭게 바꾸어 블로거의 경험담이 녹아든 것처럼 자연스럽게 다시 작성해 보았습니다. 이번에도 별표는 모두 제외하고 깔끔하게 서식을 맞추었습니다.
워드프레스 외국어 스팸 댓글, 플러그인 없이 완벽하게 차단하는 나만의 팁
워드프레스로 개인 블로그를 운영하다 보면 불청객처럼 찾아오는 스팸 댓글 때문에 골머리를 앓는 경우가 참 많습니다. 특히 한국어로만 소통하는 공간임에도 불구하고 영어, 중국어, 러시아어 등 정체불명의 외국어로 도배된 댓글 창을 보면 한숨부터 나오게 되죠.
보통은 아키스밋(Akismet) 같은 유명한 스팸 차단 플러그인을 설치해서 해결하시지만, 사이트에 설치된 플러그인이 늘어날수록 웹사이트 로딩 속도가 느려질까 봐 걱정하시는 분들도 많으실 겁니다.
그래서 오늘은 제가 제 블로그에 직접 적용해 보고 가장 확실한 효과를 보았던 ‘무거운 플러그인 없이 스팸 댓글을 차단하는 방법’을 두 가지 공유해 드릴까 합니다.
1. 한글이 없는 댓글은 원천 봉쇄하기 (functions.php 수정)
가장 강력하고 속 시원한 방법입니다. 댓글 내용에 ‘한글’이 단 한 글자라도 포함되어 있지 않다면 아예 등록 자체가 안 되게 시스템적으로 막아버리는 것이죠.
적용하는 방법은 다음과 같습니다.
-
워드프레스 관리자 화면에 로그인합니다.
-
왼쪽 메뉴에서 외모(테마 디자인)를 누르고 테마 파일 편집기로 들어갑니다.
-
우측의 파일 목록 중에서 테마 함수(functions.php) 파일을 클릭합니다.
-
소스 코드의 맨 마지막 줄에 아래의 PHP 코드를 그대로 복사해서 붙여넣고 저장합니다.
add_filter( 'preprocess_comment', function($commentdata) {
$comment_content = $commentdata['comment_content'];
$is_spam = false;
if ( ! preg_match("/[\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}]+/u", $comment_content) ) {
$is_spam = true;
}
if ( $is_spam ) {
wp_die(
'<p>댓글 등록 실패: 한국어 문장을 포함하여 입력해 주세요.</p>',
__( 'Comment Submission Failure' ),
array( 'back_link' => true )
);
}
return $commentdata;
}, 2 );
이 짧은 코드가 하는 역할은 단순하지만 아주 훌륭합니다. 누군가 댓글을 작성하고 등록 버튼을 누르는 순간, 서버가 본문에 한글이 있는지 쓱 검사합니다. 만약 한글이 없다면 데이터베이스(DB)에 도달하기도 전에 통과를 거부하고, “한국어 문장을 포함해 달라”는 안내 화면을 띄워버립니다.
이 방식이 특히 좋은 이유
가장 큰 장점은 내 서버의 소중한 데이터베이스에 쓰레기 같은 스팸 데이터가 아예 쌓이지 않는다는 점입니다. 스팸이 DB에 저장되기 전에 입구 컷을 해버리기 때문에 서버 자원을 훨씬 효율적으로 쓸 수 있고, 플러그인이 없으니 블로그 속도도 쾌적하게 유지할 수 있습니다.
적용 전 꼭 알아두셔야 할 점
functions.php 파일은 워드프레스의 핵심 작동 파일입니다. 코드를 잘못 건드리면 사이트 접속이 안 되는(화이트 스크린) 아찔한 상황이 발생할 수 있으니, 작업 전에 반드시 원본 파일을 백업해 두시길 권장합니다. 코드를 직접 만지는 것이 영 불안하시다면, WPCode 같은 코드 관리 전용 플러그인을 이용해 코드를 덧붙이는 것도 아주 안전하고 좋은 대안입니다.
물론, 이 방법을 쓰면 한국어를 전혀 모르는 순수 외국인 방문자의 정상적인 소통도 막힌다는 점은 감수하셔야 합니다.
2. 워드프레스 기본 ‘블랙리스트’ 기능 활용하기
위의 한글 필수 입력 설정과 더불어, 워드프레스가 기본적으로 제공하는 필터링 기능을 함께 세팅해 두면 방어망이 훨씬 촘촘해집니다. (최근에는 번역기를 돌려서 어설픈 한글로 스팸을 남기는 봇들도 꽤 늘어났기 때문입니다.)
-
워드프레스 관리자 화면에서 설정 메뉴로 이동한 뒤 토론을 클릭합니다.
-
스크롤을 조금 내려보면 ‘허용하지 않는 댓글 키워드’라는 커다란 빈칸이 보입니다.
-
이곳에 스팸 댓글에 단골로 등장하는 특정 단어, 불법 도메인 주소, 이상한 IP 등을 한 줄에 하나씩 쭉 적어주시면 됩니다.
여기에 등록된 키워드가 단 하나라도 포함된 댓글이 달리면, 관리자 승인을 기다리지 않고 곧바로 휴지통으로 직행합니다. 어떤 단어들을 넣어야 할지 막막하시다면 구글이나 깃허브(GitHub) 등에서 ‘워드프레스 스팸 댓글 블랙리스트 모음’ 등을 검색해 보시면 전 세계 개발자들이 미리 모아둔 리스트를 쉽게 구해서 복사해 넣으실 수 있습니다.
https://github.com/splorp/wordpress-comment-blocklist/blob/master/blacklist.txt