anti cheating protection ?

M

michi12345

Hallo,

ich habe leider ein grosses Problem bei einem Besucher Exchange Script und hoffe, daß mir einer von Euch helfen kann.

Es gibt immer wieder Leute, die anscheinend nicht auf Manipulationen verzichten können und auf irgendeine Weise versuchen, sich kostenlos mehr Credits zu verschaffen, um auf diese Weise mehr Besucher auf ihre Homepage zu bekommen.

Das Script hat eine IP Sperre eingebaut und arbeitet auch mit Sessions. Der Counter besteht aus einem Javascript + php Teil, der die Parameter an ein weiteres php script weitergibt.

Auf diese Weise werden Manipulationen durch img src, reloads oder iframe verhindert. Trotzdem haben sich vergangenes Wochende wieder Leute angemeldet, die da irgendwie durchkommen. Das Script registriert von denen zeitweise tausende von angeblich eingehenden Hits, dann ist wieder stundenlang kein einziger Hit von den entsprechenden ID Nummern zu registrieren ???????

Das Counter Log File bestätigt unterschiedlich eingehende IP Adressen für die dazugehörigen ID´s, jedoch widerspricht die tägliche Serverstatistik dem Log File, auch die tatsächlichen Seitenabrufe und Referers auf den Ziel URL´s stimmen absolut nicht mit der Hitstatistik des Scripts überein.

Da ich nicht weiss, auf welche Weise diese Manipulationen zustande kommen, fällt mir auch keine Lösung ein. Ich habe von irgendwelchen Proxy Simulationsprogrammen gelesen, die permanent eine andere IP Nummer vorgaukeln.

Wie müsste eine Lösung für dieses Problem aussehen ? Gibt es eine einfache Abfrage, z.B. mit einer if Kondition ? Wenn der Besucher einen Proxy Server benutzt, dann ignorier alles weiter ? Wenn ja, wie lautet ein solcher code. Oder wäre es sinnvoll, zusätzlich Cookies zu benutzen. Wenn ein Cookie in den letzten x Minuten geschrieben wurde oder wenn kein Cookie geschrieben werden kann, dann führe nichts weiter aus (Code)?

Hoffe, jemand kann mir da helfen.

Micha
 
Cookie ist eine moeglichkeit.
PHP:
setcookie("counted",1,time()+3600);
setzt eine Variable counted mit dem Value 1 in einen Cookie.
time()+3600 bedeuted die Zeit wann der Cookie ablauft sprich:
Momentane Zeit + 3600 sec (1h)

Beim PHP Seiten laden ist automatisch das Array $HTTP_COOKIE_VARS vorhanden. So das du leicht durch

PHP:
if($HTTP_COOKIE_VARS["counted"]==1)
{
   // Tu was
}

pruefen kannst.
Eine andere moeglichkeit (wirste selber drauf gekommen sein):

Kick die Stoerenfriede !
 
Ich habe gerade noch die Abfragen für $HTTP_REFERER und $HTTP_USER_AGENT beim ersten Script ergänzt und merkwürdigerweise gibt es bei den besagten Leuten weder eine Referer noch anscheinend einen Browser. Es sieht also so aus, als ob hier ein Script lokal benutzt wird.

Da nur bei den Cheatern keine Referer ausgegeben wird, könnte man doch hier noch eine Abfrage einfügen. Ich bin momentan einiges am ausprobieren, funzt leider aber noch nicht, z.B.

// Insert into $tab_pre

$sql = " INSERT INTO $tab_pre(id,time,address,referer,browser,count) values($id,$time,'$REMOTE_ADDR','$HTTP_REFERER','$HTTP_USER_AGENT',0) ";
mysql_query($sql);
$time=mysql_insert_id();


// Referer oder nicht?
$referer_check = mysql_query("SELECT * FROM $tab_pre WHERE referer = '$HTTP_REFERER');
if(@mysql_num_rows($referer_check)>0)
// dann weiterausführen

Wie müsste das richtig dargestellt werden?

Die Cookie Sache ist mir momentan noch zu kompliziert, denn hier muss auch noch definiert werden, was passiert, wenn kein Cookie da ist und wenn keiner geschrieben werden kann.
 

Neue Beiträge

Zurück