阻止恶意推介网站

时间:2012-07-21 01:45:20

标签: javascript security .htaccess web-traffic

我的网站从包含恶意javascript的网站获得大量流量(见下文)

我并不完全理解其目的,但我认为这个想法是捎带我网站的高流量并操纵他们自己的流量统计数据。

我尝试使用.htaccess阻止引荐网址(它们是假的blogspot网站),但这不起作用。有没有其他方法可以摆脱这种垃圾流量?我的网站是在专用服务器上运行的,所以如果有什么我可以做的,除了.htaccess(这里建议http://www.javascriptkit.com/howto/htaccess14.shtml),请告诉我。

这是恶意代码:

<script type="text/javascript">
var sLocation = document.referrer.toLocaleLowerCase();
//Links to boost
var rDomains = ["http://site.com/"];
//Allowed domain referrer
var aDomains = [".com"];
var valid = 0;

//Valid referrer
for (i=0;i<aDomains.length;i++) {
//Check referrer
if (sLocation.indexOf(aDomains[i], 0) > -1) 
{
valid = 1;
break;
}
}

//Valid referrer
if (valid == 1) 
{
//Loop
for (i=0;i<rDomains.length;i++) {
//alert(rDomains[i]);
invisibleWindow("mydiv" + i,rDomains[i]);
}
}

function invisibleWindow(iframeID, url) {
divel = document.createElement("div");
divel.id = "div" + iframeID;
divel.style.width = "5px"; 
divel.style.height = "5px";
divel.style.visibility = "hidden";

//Add div
document.body.appendChild(divel);

domiframe = document.createElement("iframe");
domiframe.id = iframeID; 
domiframe.src = url;
domiframe.style.width = "5px"; 
domiframe.style.height = "5px";
domiframe.style.visibility = "hidden";

var divid = document.getElementById("div" + iframeID);
divid.appendChild(domiframe);
}

</script>

这可能是由代码作者编写的:

http://seotipsnewbie.blogspot.com/2011/12/script-to-get-unlimited-traffic-for.html

1 个答案:

答案 0 :(得分:0)

如果您知道这些尝试攻击源自(您看起来如此)的引荐来源网址,则可能只是通过引导来自该引荐来源网址的流量来阻止访问。

使用JavaScript执行此操作并不是特别可靠,因为它们可以简单地关闭JavaScript。或者在来自他们自己的网站时没有攻击你的网站(没有推荐网址)。

var block = ['url1', 'url2'];
for (var b = block.length; b--;) {
    if (document.referrer.match(block[b]))
        window.location = "http://google.com/";
}

使用服务器端语言执行此操作会更加可靠,尤其是因为您可以收集有问题的IP地址并基于此而不是refferer网址进行阻止,我必须说我对此并不十分信任解。 更好的方法是使用前面提到的防火墙并完全阻止对服务器的访问。

在PHP中你可以使用$ _SERVER ['HTTP_REFERRER']作为引用网址,如果我的记忆服务我,则使用$ _SERVER ['REMOTE_ADDR']作为IP地址。代码本身非常相似:

$block = ['url1', 'url2'];
foreach ($block as $value) {
    if ($_SERVER['HTTP_REFERRER'] == $value)
        header('Location: http://google.com/');
}

您可能会使用==(不会信任===在我的头顶,因为它是来自dom节点的值)而不是在javascript中匹配..这是漫长的一天,无论出于何种原因,首先想到了匹配。