리퍼러기록을 보면 페이지를 이동시켜버리는 리퍼러 스팸

최근 블로그툴의 “리퍼러 기록”을 보면 자동으로 광고페이지로 이동시켜 버리는 리퍼러 스팸이 활동하고 있습니다.


리퍼러 로그 페이지를 보면, 저렇게 깨지는 화면이 나옵니다.


그 다음 순간 약장사 페이지로 이동됩니다.

원리를 보자면, 리퍼러주소에 iframe 태그를 삽입하는 방법을 씁니다.


해당 스팸의 리퍼러 기록

예를 들어 저 광고의 경우

http://스팸광고사이트/search/results.html?query=Buy%20viagra%20for%20lowest%20prices
%20Buy%20viagra%20Online%20Now%20%3CIFRAME%20src%3D%2F%2Fmy-dom.info%2Fm.php
%3E&search.x=34&search.y=10&search=search

그림과 같이 리퍼러 주소가 마치 ‘검색엔진을 통해 검색해서 들어온것’처럼 구조가 꾸며져 있고, 검색어 부분에 iframe태그를 삽입해 놓았습니다. 그래서 리퍼러로그정리(RefererURLBeautifier) 플러그인 같은것으로 검색어를 표시하는 플러그인을 쓸경우 iframe에 삽입된 자바스크립트에 의해 리다이렉션을 당하게 됩니다.

해결법

RefererURLBeautifier 플러그인을 1.04이상으로 업데이트 합니다. 링크 1.04에서는 htmlspecialchars()함수로 키워드를 변환시켜서 iframe태그가 사실상 무력화 됩니다.

만약 버전업을 하지 못할 이유가 있거나 더 확실히 하고 싶다면 RefererURLBeautifier 플러그인의 index.php 파일을 열어

return ($keyword) ? ‘<span style=”font-weight: bold; color: #594″>[‘.$keyword.’]</span> ‘ . UTF8::lessenAsEm($url, 70 – UTF8::lengthAsEm($keyword)) : UTF8::lessenAsEm($url, 70);

위와 같은 return 이 이루어지는 바로 위에 strip_tags()함수로 html을 제거해줍니다.

$keyword = strip_tags($keyword);
return ($keyword) ? ‘<span style=”font-weight: bold; color:
#594″>[‘.$keyword.’]</span> ‘ . UTF8::lessenAsEm($url, 70 –
UTF8::lengthAsEm($keyword)) : UTF8::lessenAsEm($url, 70);

ps.
“리퍼러 기록”뿐 아니라 “키워드 통계”에서도 리다이렉션이 작동합니다.
이것도 응급조치로 refererkeyword 플러그인의 index.php를 열어서 147줄에       

document.write(unescape(“<?php echo $keywordkey;?>”));

document.write(unescape(“<?php $keywordkey = strip_tags($keywordkey); echo $keywordkey;?>”));

로 고쳐주면 해결됩니다.

추가

텍스트큐브용 공식 패치가 발표되었습니다.