speed-autoclicker erkennen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
angreifer
beispiel
browser
button
code
dank
erkennen
frage
hase
http
idee
jemand
klicken
paar
problem
programm
schlag
sekunde
spiel
url
-
Halli Hallo,
mal wieder eine kleine Frage in die Runde, ich bin mir nicht sicher ob ich hier richtig bin, da es mich in Bezug auf PHP interessiert habe ich es jetzt mal hier platziert.
Gibt es eine Möglichkeit sogenannte „Speedclicker“ zu erkennen?
Der bekannteste ist wohl dieser hier:
http://fabi.me/tools/speed-autoclicker/
Ich habe schon ein wenig Tante Google gefragt aber nichts Brauchbares gefunden. Mich interessiert ob man irgendwie beim aufrufen eines Links oder Buttonklicks erkennen kann das der Nutzer ein solches Programm nutzt und somit reagieren kann.
Eine schöne Nacht euch allen
LG Marco
Beitrag zuletzt geändert: 6.2.2014 2:00:17 von aff3m1tw4ff3 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Denkanstoß:
1. Was macht einen normalen User aus und woran kann man ihn (in kurzen Zeiträumen!) zuverlässig erkennen? Session? IP? Referrer?
2. Wie schnell folgen Klicks normalerweise im jeweiligen Kontext?
3. Wie läßt sich ein Klick einem bestimmten User zuordnen? (Siehe 1.)
Dementsprechend sinnvolle Maßnahmen:
1. User eindeutig identifizieren
2. Auf ungewöhnliches Verhalten prüfen
3. Unnormale Klicks als ungültig behandeln und ablehnen.
Möglichkeiten dazu sind vielfältig und abhängig von den gegebenen Umständen.
-
Hallo Marco,
wenn Du nicht prüfen möchtest wer da klickt, dann bringe die Schaltfläche doch einfach disabled mit PHP auf den Bildschirm; danach einfach ein javascript oder jqueryscript starten das die Schaltfläche nach X Sekunden auf enabled setzt. Den Wert für X kannst Du ja per Zufall noch schwanken lassen, z.B. zwischen 2-5 Sekunden. Einen normalen user sollte das nicht wirklich stören, da er sowieso erstmal die Webseite durchlesen muss.
Viel Erfolg! -
Hi,
danke schon mal für die Tipps. @dunkeltuten, wer da klickt prüfe ich schon und die Buttons sollten schon sofort vorhanden sein.
Die Richtung von fatfreddy habe ich auch schon eingeschlagen. Mein Problem ist, das meine User schon von Hause aus ein untypisches verhalten an den Tag legen. Das ist aber auch so gewollt.
Zur Erklärung, ich habe auf meiner Seite ein paar Spiele zur Belustigung der User.
Leider haben nun auch die ersten den Zweck von Speedklickern erkannt und cheaten natürlich damit.
Da die Spiele nur mit Login laufen kann ich Euch jetzt kein Bsp. Zeigen.
Aber mal nen Kurzablauf eines Würfelspieles:
-Die User würfeln gemeinsam gegen einen Hasen
-Der Hase wird Stück für Stück besoffen
-Ist der Hase besoffen kann man Ihn KO schlagen und etwas gewinnen
(so sieht das aus--> http://prntscr.com/2pyqv8 )
Das Problem dabei ist, das die Leute einfach von Natur aus schnell klicken da man ja der erste sein will. Ich hatte es schon mit Zeitsperren zwischen den Würfelvorgängen Probiert, das behindert aber die ehrlichen Spieler mehr als die Speedclicker.
Ich benutze Sessions auf der Seite und Logge jeden Vorgang des User mit, die Klicks einem User zuordnen ist also kein Problem. Ich kann nur nicht sagen ob da nen Programm Klickt oder der User selber. Man schafft ja auch ohne Programm nen paar Klicks die Sekunde. Darum hatte ich ein wenig Hoffnung das man irgendwie erkennt was da passiert.
Gruß Marco
-
Ein Programm wird normal aber sehr regelmäßig klicken, ein User nicht, vielleicht kannst du so einiges rausfiltern. Leider geht dies nur im Nachhinein und kann (auch durch das verlinkte Programm) umgangen werden.
-
aff3m1tw4ff3 schrieb:
Halli Hallo,
mal wieder eine kleine Frage in die Runde, ich bin mir nicht sicher ob ich hier richtig bin, da es mich in Bezug auf PHP interessiert habe ich es jetzt mal hier platziert.
Gibt es eine Möglichkeit sogenannte ?Speedclicker? zu erkennen?
Der bekannteste ist wohl dieser hier:
http://fabi.me/tools/speed-autoclicker/
Ich habe schon ein wenig Tante Google gefragt aber nichts Brauchbares gefunden. Mich interessiert ob man irgendwie beim aufrufen eines Links oder Buttonklicks erkennen kann das der Nutzer ein solches Programm nutzt und somit reagieren kann.
Eine schöne Nacht euch allen
LG Marco
Also, so ein speedclicker wär unsinnig, wenn man über js das entsprechend manipulieren könnte, dass zum beispiel beim $(document).ready() einfach der Klcik-auslöser mit reingehangen wird. Genausowenig kannst du aus einem Browser auch nicht auf die Prozessliste zugreifen. aber du könntest unterbinden, dass das spiel gespielt wird, wenn der Browser erkennt, dass das Plugin GreaseMonkey installiert ist oder ähnliches:
http://www.tutorials.de/javascript-ajax/304422-browser-plugins-mit-javascript-auslesen.html
Damit hast du aber deinen SpeedClicker immer noch nicht deaktiviert.
1. Frage:
löst das teil bei jedem Click ein Page_load aus oder läuft das über Ajax im Hintergrund? (ok, javascript mit Ajax kann man lokal über entwicklertools manipulieren oder ein greasemonkey-script reinballern lassen...)
--> Die Antwort dieser Frage entscheidet, ob man bei einer Analyse die Latenz der Verbindung berücksichtigen muss oder nicht.
Wenn wir folgende Annahme annehmen: ein user kann sehr schnell klicken, kann aber nciht auf 1 ms genau timen(abweichungen durch ping müssen weggerechnet werden), das passiert vielleicht 3 mal hintereinander, aber zwischendurch ist mal eine kleine abweichung.
Dann legst du dir eine art score-Variable an. Beispiel: wenn ein user 3 clicks hintereinander schafft ohne 1 ms unterschied in den Zeitabständen, lässt du den Scorecard um 100 steigen, mit jedem weiteren Click multiplizierst du den mit 2. Sobald er beim 10. in folge angekommen ist, hast du also einen Score von 100*2^10 = 102.400. dann lässt du den wegschreiben. den score lässt du im sekundentakt um 2000 reduzieren und lässt clicks erst wieder zu, sobald der Score wieder under 10000 ist. damit wäre er für 46 sekunden außer gefecht gesetzt und verliert das spiel vermutlich...
anderes szenario: ein user schafft 3 mal hintereinander zu timen, dann 2 mal hintereinander:
100*2^3 + 100*2^2 = 1200 -> unter dem Grenzwert und weil dann vermutlich 1 sekunde vergeht, wär er dann wieder bei 0. er kann weiter spielen.
Ein ähnliches Verfahren wird zur Absicherung von DNS-Servern gegen DoS-Angriffe verwendet.
das wär meine Idee dazu...
2. Frage: wie lange am stück schafft ein user wohl seine 20 Klicks die sekunde, oder was vonnöten ist?
-> ich denke mal, man kann ausschließen, dass jemand mehr als 5 minuten mit dieser geschwindigkeit durchhält... außer der Terminator persönlich sitzt dran... da wäre auch noch ein filter zu setzen möglich... vielleicht etwas großzügiger, 10 minuten dann...
außerdem wird sich bei entsprechender Benutzung abzeichnen, dass ehrliche spieler den aktuellen Highscore kaum um ein paar Prozent überschreiten können, sobald ein ordentlicher Highscore erreicht wurde... solche Highscores könnten rausgefiltert werden(zumindest die, die sich auf einen festen zeitraum beziehen). -
Also das Ganze läuft mit reinem PHP, es wird also mit jedem Click ein Page-Reload ausgeführt.
Das ist mal entstanden als ich angefangen habe mich mit PHP zu beschäftigen.
Beim Würfeln selber sind die Speedklicker auch noch kein Problem. Würden da so viele Klicks gezählt werden wäre der User selber besoffen und aus dem Spiel raus.
Das Problem entsteht wenn der Hase Besoffen ist, dann wird das Würfelfeld ausgeblendet und es kommt ein Button, wer den als erster Klickt bekommt den KO Schlag des Hasen. Dann geht das Spiel von vorne los bis der Hase wieder besoffen ist.
Bei diesem KO Schlag sind die Speeklicker einfach unschlagbar. Sobald der erste den KO-Schlag gemacht hat werden alle folgenden Versuche geblockt.
Wenn ich das richtig sehe scheint es schwer zu werden da wirklich was gegen zu machen. Was mir gerade als Idee gekommen ist, ich könnte ja einfach eine zb. Rechenaufgabe zum KO-Schlag setzen. Heißt der User muss erst Rechnen und das Ergebnis in ein Feld eintragen. Das erhöht vielleicht zumindest die Chancen derer etwas die nicht „bescheissen“
-
nun, ich denke, dass dein problem nicht der speedclicker ist, sondern dass jemand über javascript sich die ID vom button krallt und über jquery zum beispiel
$(document).ready(function() { $("#buttonName").click(); });
ausführt, sobald der Button da ist... wenn das über greasemonkey reingehangen wird, dann ist der button bereits geklickt, wenn dein cheater die Seite aufruft...
nd eine Rechnung wird das problem auch nciht lösen, denn dann wird der Cheater ganz einfach eine weitere zeile reinhängen:
$(document).ready(function() { $("#IDdesErgebnisfeldes").val(eval($("#IDderRechnung").html())); $("#buttonName").click(); });
und damit hat er das problem wieder umschifft...
und wenn ich jetzt nochmehr von dem Spiel erfahre, wie es funktioniert, dann kann ich dir den ausdruck schreiben, dass der Cheater gar nciht mehr klicken braucht, sondern nur die Seite aufruft, um zu gewinnen... -
Hier mal ein riesen DANKE an Sebulon der sich die Zeit genommen hat und mir ein paar Lücken in meinem Würfelspiel gezeigt hat. Ich würde so gern eine positive Bewertung für die Mühe abgeben, naja wir wissen ja alle dass ich das nicht kann :)
Das Problem mit den Speedklickern besteht zwar weiterhin, geschlossene Lücken im Ablauf sind mir aber genauso wichtig…
Danke noch mal Sebulon!!
LG Marco
-
Deine Idee mit der Rechenaufgabe gefällt mir. Grundsätzlich kann man in Games die Javascript beinhalten, oder in deinem Fall ein Klicken eines Buttons immer bescheissen.
Aber da es ja eh ums Saufen geht, find ich, passt das gut, wenn man dann eine leichte Rechenaufgabe gestellt bekommt :D -
Rechenaufgaben lösen? Kann man haben, muss man aber nicht: ist halt Geschmackssache
Aber wenn Du einfach ein captcha lösen willst, dann gibt es diverse Möglichkeiten
Wie wäre es denn mit "Jquery Motion-captcha"?
Guck dir mal den folgenden Demo Link an:
http://www.josscrowcroft.com/demos/motioncaptcha/
Wie es gemacht wird findest du dann hier:
http://www.josscrowcroft.com/projects/motioncaptcha-jquery-plugin/
Finden vor allem Leute gut, die sowas schon vom Smartphone kennen
Beitrag zuletzt geändert: 10.2.2014 11:36:49 von dunkeltuten -
Auch ein Speedklicker sendet einen Header, den müsste man raus finden und kann ihn dann eventuell gleich sperren.
-
aff3m1tw4ff3 schrieb:
Das Problem mit den Speedklickern besteht zwar weiterhin, ...
Du hast zwei Möglichkeiten:
1.) Du versuchst, Angreifer zu erkennen. Das scheint nicht zu funktionieren.
2.) Du verhinderst, dass der Angreifer einen Angriffspunkt findet:
Der Angreifer ist kein Mensch (zumindest nicht direkt), daher braucht er ein Muster, das er auf jeder Seite wiederfindet, um den "Klick" auszulösen. Das kann wiederum über (mindestens) drei Möglichkeiten geschehen:
1.) Die DOM-ID des Buttons (oder Links). Die kannst du randomisieren. Dann ist sie bei jedem Seitenaufrauf anders.
2.) Die Ziel-URL des Formulars (oder des Links). Die kannst du auch randomisieren, indem du eine zufällige Zeichenkette hinten anhängst.[0]
3.) Die Position des "anklickbaren" Objekts (Link, Button) im DOM-Baum:
a) Hier wirds schwieriger, aber prinzipiell könntest du durch Einfügen zufälliger div- oder span-Elemente die Suche erheblich erschweren.
b) Oder du plazierst mehrere solche Buttons- (oder Links) hintereinander von denen immer nur einer (zufällig ausgewählt) zur Ziel-URL führt, die anderen dagegen auf eine Fehlerseite (deren URL aber auch variieren muss, sonst orientiert sich der Angreifer daran).
--
[0] Ein hartnäckiger Gegner wird dann eben über "verschärfte" Mustersuche gehen und den Anfangsteil der URL in einem action- oder href-Attribut suchen. In dem Fall hilft vielleicht Lösungssansatz 3b). -
Hi,
als erstes Mal Danke für die neuen Anregungen. Das Problem liegt allerdings nicht darin das die User Skripte verwenden die auf „ID-Suche“ gehen. Die Speedcklicker generieren einfach mit einem Klick Unmengen an Anfragen. Man kann über das Programm einstellen wie oft bei einem Mausklick die Anfrage gesendet wird.
Der eigentliche Klick wird also manuell ausgeführt. Daher die Idee einer Rechenaufgabe, da hat der „normal“ User zumindest noch den Vorteil das er vielleicht schneller rechnen kann und vor dem Speedklicker fertig ist.
@dunkeltuten
Die Captchas finde ich auch sehr schön, die wären auch noch eine Idee, in der Ausführung kannte ich die noch nicht mal..
Gruß Marco
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage