• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Greasemonkey verbieten oder einfach nur analysieren.

Status
Für weitere Antworten geschlossen.

Asterixus

Aktives Mitglied
Hallo,

ich zerbreche mir seit ein paar Tagen den Kopf darüber, wie man die Benutzung von Greasemonkey analysieren kann oder sogar komplett verbieten kann.
Ich bin kurz davor ein Browsergame zu veröffentlichen und mit Greasemonkey kann man da auch leicht cheaten.

Leider finde ich keine Möglichkeit, die Benutzung von Greasemonkeyscripts auf meiner Seite zu analysieren.

Ich habe Tests gemacht indem ich die Anzahl HTML-Elemente nachschaue kurz vor dem Script-Ende und dann 100ms später. Wenn es nicht die selbe Zahl ist, ist es eben Greasemonkey.
Dies würde ich natürlich nicht immer machen, sondern nur stichprobenmäßig.

Habt ihr andere Ideen?
 
Werbung:
Ich sehe keine Chance. Was der Nutzer in seinem Client veranstaltet, kannst du nicht wirklich beeinflussen.

Ich habe Tests gemacht indem ich die Anzahl HTML-Elemente nachschaue kurz vor dem Script-Ende und dann 100ms später.

Diese Überprüfung lässt sich per Greasemonkey sicherlich deaktivieren.

Du musst deine Anwendung serverseitig absichern und alle vom Benutzer kommenden Daten als potentiell manipuliert ansehen.
 
Werbung:
Ich fand meine Antwort ganz nützlich. :) Das Problem ist, dass der Nutzer nach Belieben manipulieren kann, was clientseitig geschieht. Wer clever genug ist, ein Greasemonkey-Script zu schreiben, ist sicher auch clever genug, etwaige clientseitigen JavaScript-Schutzmechanismen -- im wahrsten Sinne des Wortes -- auszuschalten.

Vielleicht hilft es, wenn du beschreibst, worin die Manipulation besteht, aber ich bin da generell skeptisch.
 
Ich hatte gedacht, dass ich Stichprobenmäßig ein kleines Script ausführe (es also nicht immer da ist) und dann irgendwie analysiere ob das DOM geändert wurde in irgendeiner Weise die nicht erlaubt ist. Oder ob ich irgendwie Ajax-Aufrufe "erlitten" habe, was nicht erlaubt ist, weil es den anderen Spielern gegenüber unfair ist.
 
Gerade habe ich das hier gefunden: Dean Edwards: How To Disable GreaseMonkey On Your Web Site Weiß nicht, ob das heutzutage noch so funktioniert oder ob sich Greasemonkey anders in die Seite einklinkt. Das Script scheint einfach zu verhindern, das document.createElement für den SCRIPT-Tag aufgerufen werden kann, wenn nicht das passende "Passwort" mitgeliefert wird. Ich habe nicht getestet, ob das Probleme in anderen Browsern macht. Aber vielleicht wäre das zumindest ein Ansatz.

Aber selbst wenn sich auf diese (oder eine andere) Art Greasemonkey und damit die einfachste "Angriffsquelle" halbwegs sicher abstellen lässt, bleibt das grundsätzliche Problem bestehen, dass du als Seitenbetreiber letztlich nicht beeinflussen kannst, was der Nutzer in seinem Browser oder auch bloß auf seinem Rechner veranstaltet.

Du musst auf dem Server generell davon ausgehen, dass Anfragen vollkommen willkürlich und mit modifizierten Daten durchgeführt werden. Mogeleien kannst du effektiv nur auf dem Server unterbinden. Du könntest vielleicht speichern, wann ein Spieler die letzte Anfrage an den Server geschickt hat und nur alle x Minuten eine weitere Anfrage zulassen oder ähnliches.
 
Werbung:
Wie mermshaus schon sagte. Du wirst um serverseitige Abfragen icht herum kommen. Ich weiss nicht in welcher Sprache das Spiel entwickelt wird, aber wenn es PHP und JS ist, dann solltest du die Spielelogik in PHP verarbeiten und nur gewisse Parameter per JS hinschicken. Dort fragst du dann erst mal ab, ob der Nutzer die Rechte dafür hat und ob du eine unlogische Aktion ausführen kannst.
Beispiel wäre (Für ein RPG): Der Benutzer befindet sich auf dem Kampffeld und es kommt eine Anfrage für das öffnen eines Shops. Solche Sachen musst du herausfinden. Ich weiss nicht wie deine Scripte geschrieben sind, aber wenn du Parameter in HTML-Tags mitgeben solltest, reicht auch firebug zum manipulieren deiner Daten. Deswegen ist es ein Muss die Daten serverseitig zu validieren. Denn sonst wirst du schon am ersten tag ein paar Cheater sehen in dem Spiel ;)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben