본문이 비어있는 스팸 트랙백을 차단해버리기

오늘 무슨 날이군요. 알파벳으로만 되어 있는 영문 트랙백이 잔뜩 달렸습니다. 이상한 점은, 제가 영어중환자 플러그인을 설치하고 있었거든요. 그런데도 트랙백이 걸리더란 말입니다.

그래서 보니, 통과된 스팸 트랙백은 “본문이 없고 제목만 있다”는 점을 발견했습니다.
영어중환자 플러그인을 보니 이렇게 되어 있더군요.

function EnglishPatient_AddingTrackback($target, $mother) {
    return !preg_match('/^[\x{00}-\x{7F}]+$/u', $mother['excerpt']);
}

붉은 글자 부분이 패턴(정규식)입니다. 즉, 트랙백의 본문글에서 전부 영문인지 체크해서, True가 되면 전부 영어니까, 그걸 !로 뒤집어서 반환하는 것입니다. 알고리즘은 훌륭하지만 비어있으면 False로 처리되니까 !로 뒤집혀서 True. 트랙백이 통과되어 버리는 단점이 있죠.

제 취향대로 고쳐버렸습니다.

function EnglishPatient_AddingTrackback($target, $mother) {
    return preg_match('/[xA1-xFE][xA1-xFE]/', $mother['excerpt']);
}

preg_match 앞에 !를 떼어버리고, 정규식을 한글이 들어있는지 체크하는걸로 바꿨습니다.

이걸로 해결될려나요.

ps.

휴지통에 들어간 스팸 트랙백수. 계속 증가중…

ps.

좀더 정교한 한글 매칭 정규식
/[x{1100}-x{11ff}x{3130}-x{318f}x{ac00}-x{d7af}]+/u
다만 유니코드에서만 적용됨.

블로그에는 꺽쇠괄호를 안쓰는게 좋다

꺽쇠괄호라고도 하고 ‘홑화살괄호’나 ‘꺽은괄호’, ‘앵글 브래킷’이라고도 하는 괄호. 그러니까, “<“나 “>”같은 괄호를 말하는거다. 이 괄호는 HTML이나 XML등의 태그를 구분하는데 사용된다. 그래서 많은 웹기반 RSS리더기나 파서 프로그램들이 보안을 위해 꺽쇠괄호를 잘라내버린다. 그러면 어떤 문제가 생기냐면,

올블로그 화면

갑자기 왠 줄거리? 라는 단어가 나온다. (화면은 익스트림무비 블로그의 올블로그 싱크 화면) 원래의 글은

꺽쇠0

쏘우4에 대한 이야기다. 구글리더등의 RSS리더에서도

꺽쇠2

이렇게 나온다.

즉, 꺽쇠괄호와 그 안에 글을 태그로 인식해서 잘라내어진 것이다. 본문에도 보면 “선배격인 . 그 4번째 영화…”라는 식으로 꺽쇠를 사용한 글은 전부 잘려있다. 블로그는 웹기반 RSS리더등에 의존하는 경우가 많기 때문에 이런 문제를 예방하려면 따옴표를 쓰던가 ()괄호를 쓰던가 하는게 좋다.

물론 모든 RSS기반 프로그램이 이런 문제를 일으키는 것은 아니다. 응용프로그램기반이거나 HanRSS같이 개량된 리더기는 정상으로 표시된다. 그래도 표시 못하는 서비스가 많으므로 안쓰는것이 좋을 것이다.

꺽쇠3

요약정리

<>를 제목이나 글 본문에 사용하면, 메타 사이트나 RSS리더에서 삭제되서 문맥이 어긋나는 결과를 가져올수 있다.

ps. 익스트림 무비 스샷을 마음대로 사용해서 죄송합니다. ^^; 꺽쇠 많이 쓰시던게 생각나서;; 하하;;

ps. 꺽쇠괄호의 정확한 한국어 명칭은 ‘홑꺾쇠표’라고 한다.