3

私のサイトは、悪意のある JavaScript を含むサイトから大量のトラフィックを取得しています (以下を参照)

目的は完全には理解できませんが、私のサイトの高トラフィックに便乗して、独自のトラフィック統計を操作することが目的だと思います。

参照 URL (偽のブログスポット サイト) を .htaccess でブロックしようとしましたが、うまくいきませんでした。このゴミのトラフィックを取り除く方法は他にありますか? 私のサイトは専用サーバーで実行されているため、.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

これらの試行された攻撃の発信元 (と思われる) のリファラー 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アドレスを収集し、リファラーURLの代わりにそれに基づいてブロックできるため、多少信頼性が高くなります。解決策としてはあまり信頼していないと言わざるを得ません. 前述のようにファイアウォールを使用し、サーバーへのアクセスを完全にブロックすることをお勧めします。

PHP では、リファラー URL に $_SERVER['HTTP_REFERRER'] を使用し、私の記憶がよければ IP アドレスに $_SERVER['REMOTE_ADDR'] を使用します。コード自体は非常に似ています。

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

おそらく、javascript の match の代わりに == を使用することもできます (dom ノードからの値であるため、頭のてっぺんから === を信頼することはできません)。なんらかの理由で最初に考えてください。

于 2012-08-02T15:32:34.883 に答える