3

我的网站从带有恶意 javascript 的网站获得了大量流量(见下文)

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

我尝试使用 .htaccess 阻止推荐 URL(它们是虚假的 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

4

1 回答 1

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 地址并以此为基础进行阻止,而不是引用 url,我必须说我不太相信作为解决方案。更好的是使用前面提到的防火墙并完全阻止对服务器的访问。

在 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 节点的值,因为它是来自 dom 节点的值)而不是 javascript 中的 match 。这是漫长的一天,比赛来到无论出于何种原因,请首先考虑。

于 2012-08-02T15:32:34.883 回答