我的网站从带有恶意javascript的网站获得了大量流量(见下文)。
我不完全理解其目的,但我认为这样做的目的是利用我的网站的高流量,操纵自己的流量统计数据。
我试着用.htaccess屏蔽推荐的URL(它们是假的博客网站),但是没有效果。有没有其他方法可以摆脱这种垃圾流量?我的网站运行在一个专用的服务器上,所以如果除了.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
发布于 2012-08-02 23:32:35
如果您知道这些企图攻击的来源url (看起来就是您的来源),那么您可以通过简单地将来自该引用url的流量引向别处来阻止访问。
然而,使用JavaScript做这件事并不是特别可靠,因为它们可以简单地关闭JavaScript。或者当你的网站来自他们自己的时候,不要攻击你的网站(没有引用url)。
var block = ['url1', 'url2'];
for (var b = block.length; b--;) {
if (document.referrer.match(block[b]))
window.location = "http://google.com/";
}用服务器端语言做这件事会更可靠一些,特别是当你可以收集有问题的ip地址并根据这些地址来阻止它,而不是引用urls,我必须说我对这种解决方案没有太大的信心。更好的做法是使用前面提到的防火墙并完全阻止对服务器的访问。
在PHP中,如果我没记错的话,你可以使用$_SERVER‘’HTTP_ referrer‘作为引用url,使用$_SERVER’‘REMOTE_ADDR’作为IP地址。代码本身将非常类似:
$block = ['url1', 'url2'];
foreach ($block as $value) {
if ($_SERVER['HTTP_REFERRER'] == $value)
header('Location: http://google.com/');
}你也可以在javascript中使用== (我不会相信===,因为它是一个来自dom节点的值),而不是match。这是漫长的一天,无论出于什么原因,比赛首先出现在脑海中。
https://stackoverflow.com/questions/11588838
复制相似问题