2012-07-21 72 views
3

我的网站从恶意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

+0

我相信目的比操纵他们的流量更加邪恶。我确定在某个地方有一个iframe,他们正在做一些事情,比如在您的网站上记录击键,窃取密码,通过ajax或其他xss或xsrf攻击将其发送回服务器。任何人都不会仅仅是为了夸大命中数。除了增加广告收入外,没有投资回报,也没有合理的创新。我希望你明白。 – David 2012-07-21 01:56:24

+0

如果您知道IP地址并可以访问防火墙,最好的方法是在防火墙级别阻止它们。 – Rob 2012-07-21 01:58:35

+1

根据您的预算,一个好的Web应用程序防火墙(不同于标准防火墙)是一个好主意。另请尝试在security.stackexchqnge.com。 – David 2012-07-21 02:00:38

回答

0

如果你知道这些试图攻击源自引荐网址(你似乎),你可能会通过简单地引导来自该引荐网址的流量而阻止访问。

然而,这样做并不是特别可靠,因为它们可以简单地关闭JavaScript。或者从他们自己的网站(没有引荐网址)来攻击您的网站。

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

在服务器端语言这样做会稍微更可靠,尤其是当你可以根据收集掉,与其refferer的URL,这是我必须说,我没有太多的攻击IP地址和块信仰作为解决方案。 更好的办法是使用前面提到的防火墙,并完全阻止对服务器的访问。

在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也是如此。这是一个漫长的一天,无论出于什么原因,都会首先想到匹配。