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

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

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

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
다만 유니코드에서만 적용됨.

글쓴이 : Draco (https://draco.pe.kr)
크리에이티브 커먼즈 라이선스 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다.

You may also like...

21 Responses

  1. 모노마토 댓글:

    ㅋㅋㅋㅋㅋㅋ 난 도메인 바꾸고 아직은 안들어오는데 ㅋ

    덜 유명한게 이럴때 도움이 되는구만 ㅋ

    • Draco 댓글:

      너야 유명하지 않은게 아니라 주소 바꿔서 ㅎㅎㅎ
      트랙백 주소도 임의로 바꿀수 있으면 좋을텐데. 지금 주소는 구글에 검색되면 아주 먹잇감으로 좋은 주소지…

  2. lunamoth 댓글:

    좋은 팁 감사드립니다. 텍스트큐브 사이트에 공개해주셔도 좋을듯 싶습니다^^;

  3. 데굴대굴 댓글:

    트랙백 기능을 이용하기 위해서는 각 페이지마다 고유의 URL이 있어야 하므로 이 URL은 동적 페이지여야 하지요. 즉, 확장자는 .html, .htm이여도 실제 동작할 때에는 php나 jsp같은 페이지를 지칭해야만 합니다. 하지만, 잘 보면 이런 URL은 쓰이지 않습니다.

    따라서, 동적 페이지가 아닌 컨텐츠인 .htm, .html을 홈페이지 필터링에 추가해주시면, 스팸으로 들어오는 트랙백은 필터링됩니다. 현재는 .htm, .html만 추가하면 95%이상 필터링 되지만, 추후라면 .jpg, jpeg, .gif, .png같은 그림파일의 확장자 역시 집어 넣어 주시는게 좋을겁니다. (제가 적용해서 사용중. 현재 100% 차단 성공..)

    (기술적인 면으로 생각해보면 php를 사용하는 건 대부분이 apache웹서버를 사용하고 있고 이런 기본 페이지를 여러개 이용할 때에는 웹서버의 간단한 조작만으로 가능합니다. 따라서 귀찮게 .php나 .htm파일까지 연결 시킬 필요가 없지요.
    반면 .asp나 .aspx 확장자의 경우 iis에서 사용됩니다. 불행하게도 iis를 사용하는 웹서버의 대부분의 개발자들은 웹서버를 직접 건드리는 것을 싫어하므로 확장자가 그대로 드러납니다. 이 경우, 트랙백 기능을 추가하는데에 신기술을 사용하는게 일반적일 것이므로 .asp를 사용하지 않을 것으로 예측할 수 있습니다.

    트랙백을 위한 URL이 있는 페이지를 관찰해보면, 대부분 파일 전송위 취약점을 통해 직접 페이지를 생성하는 것이므로 이 역시 지극히 기본적인 파일(.htm, .html)만을 생성할 수 있습니다.)

    • Draco 댓글:

      저도 .htm을 필터링하는걸 생각해봤습니다만… 야후 블로그나 무버블타입의 경우는 .htm이나 .html 경로를 사용하더군요. 물론 사용자는 극히 적으니 큰 문제는 안되겠습니다만…최후의 수단으로 남겨두기로 했습니다.

      어째튼 말씀 감사합니다. (제가 부족해서 이해하는데 한참 걸렸습니다 하하)

    • 데굴대굴 댓글:

      아후블로그(한국)은 .html과 .htm을 사용하지 않습니다. 트랙백의 주소는 http://kr.blog.yahoo.com/ID/trackback/nnnn 형식으로 생성되는 걸로 알고 있습니다.

      무버블타입(v4기준)의 경우에는 리퍼러URL이 /media/archives/nnnnn.html 이 되고 트랙백은 /media/mt-tb.cgi/nnnn.nnnnn…. 이런 식으로 되는 것으로 압니다. 여기서 무버블타입의 리퍼러URL은 글의 실제 주소를 지정하는 것으로 외부에서 이 글을 참고해서 글을 작성한 경우에 이를 쉽게 연결할 수 있도록 제공하는 주소입니다.

      이에 따라 트랙백 주소는 .htm과 .html이 될 수 없지요. ^^; 혹시 제가 잘못 봤다면 추가 부탁드립니다. ^^;

    • Draco 댓글:

      저도 몰랐는데 전에 스팸의 패턴을 만들어보기 위해 DB를 정리하다, url이 스팸이 아닌데도 .htm으로 끝나는 트랙백을 몇건 찾았었습니다. 두개는 야후 블로그였고, 나머지는 무버블 타입이었어요. 그래서 알고 있는겁니다.
      요즘은 달라졌을지도 모르지요. 꽤 오래된 트랙백 자료였으니…

    • Draco 댓글:

      무버블 타입이었던 주소는 /blog/archives/숫자.html 형식이네요. 4년전에 받은 트랙백입니다. 블로그가 안남아 있군요..;;

    • Draco 댓글:

      야후는 달라졌군요. 지금 테스트해보니 http://kr.blog.yahoo.com/아이디/숫자 형식으로 들어옵니다.

    • 데굴대굴 댓글:

      4년 전이면… apache에서 modrewrite같은 플러그인이 활성화되지 않았을 시절이니 .html이나 .htm으로 들어오는게 맞았을꺼 같네요. ^^

      PS. .html이나 .htm 말고도 몇가지 필터링하는게 더 있는데(/thumbnails/, /admin/, /photo/, /uploads/ 와 같은 특정 파일위치를 지정하는 정상적이라고 볼 수 없는 URL들) 이건 의외로 효과가 없더라구요.

    • Draco 댓글:

      음 그렇군요.
      좋은 팁 감사합니다. ^^

  4. Fallen Angel 댓글:

    저는 티스토리 사용자라 음 스팸방지 플러그인가 그거 쓰니까…
    휴지통에 다 들어가 있더군요…

    • Draco 댓글:

      티스토리와 텍스트큐브에는 같은 플러그인들이 있습니다. EAS와 영어 중환자 플러그인이죠. 전부 완벽하진 않습니다.
      EAS는 태터-티스토리-텍스트큐브 블로그들이 이올린을 통해 신고한 것을 학습해 필터링을 하기 때문에 가장 폭넓은 방어를 하지만, 학습이전의 초기단계 방어는 취약합니다.(그래서 차후에 다시 지우는 EAS-Plus가 나왔지요)
      영어 중환자 플러그인은 영어만으로된 스팸을 처리해줍니다만, 이 글의 본문과 같은 헛점이 있었습니다. 몇몇 티스토리 유저분들도 저와 같은 문제점을 보고했었습니다.

    • Fallen Angel 댓글:

      오호 그렇군여… 헌데 티스토리에서는 머 저걸 직접 입력할수 없으니 흐…ㅡ.ㅡ;;;;
      수정해줄때까지 기다려야 겠군여.

    • Draco 댓글:

      티스토리는 대신 서버차원에서 대응을 해주니까, 큰 문제는 전체 유저들에게 일괄적으로 해결/보완 해준다는 장점이 있죠. 게다가 다른 서비스들보다 피드백이나 대응도 빠른거 같더군요.

  1. 2008년 4월 2일 수요일

    기본 시스템 글꼴이 어쩌구 하면서 문자도구로 글을 쓸 수 없을때정확한 에러 메시지는 “기본 시스템 글꼴을 얻을 수 없으므로 요청한 사항을 완료할 수 없습니다.” 이다. 영문판에서는 “Could not complete your request because a default system font could not be obtained.”http://sourceforge.net/project/downloading.php?group_id=34153&amp…

  2. 2008년 4월 2일 수요일

    현재 티스토리의 플러그인 중 영어환자 플러그인을 사용중에 있습니다. 영어 환자 플러그인 사용중 그런데 아래 보는 바와 같이 트랙백이 영어로만 된 것을 잡아내지 못하고 있군요. 얼마전에 한글로 된 댓글로 인해 한차례 폭격을 맞았었는데… 이제는 영어로만 된 스팸도 걸러내지 못하고 있으니 우려가 됩니다. 영문으로 만 된 트랙백 오늘 하루(2008.04.02) 삭제한 것만 보니 30건씩 8페이지… 총 240개에 달합니다. 그냥 지우면 되겠지란 생각에..

  3. 2008년 4월 3일 목요일

    트랙백과 댓글 테스트용.

  4. 2008년 4월 3일 목요일

    트랙백과 댓글, 퍼머링크 테스트용 글
    테스트2…