1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Vor Manipulation durch Firebug oder ähnliches schützen?

Dieses Thema im Forum "Javascript & Ajax" wurde erstellt von deintag85, 19. März 2012.

  1. deintag85

    deintag85 Erfahrenes Mitglied

    Hallo,
    ich hab mir vor langer Zeit mal ein "Klickspiel" zusammengebastelt mit Javascript usw. Es ist ein einfaches Div was man anklicken muss. Es wird dann eine Counter-Variable +1 hochgezählt. Man hat 15 Sekunden Zeit soviele Klicks wie möglich zu schaffen. So. Nun stellt sich mir das Problem, dass man mit Firebug z.B. einfach statt +1 +9999 schreiben kann und so das Spiel auf sehr einfache Art und Weise manipulieren kann. Wie kann ich mich vor solchen Manipulationen schützen?

    Sinnlos aber hier ein Codebeispiel :

    Code (Text):
    1.  
    2. var counter = 0;
    3. function clicket() {
    4.         counter = counter + 1;
    5.         if(counter == 1) {
    6.             starttime();
    7.         }
    8. }
    9. usw...
    10.  
    Wie gesagt, jeder kann einfach statt +1 ein +999 drausmachen. Das ist doof! Vielleicht ist die Antwort ja total einfach und ich komm einfach ncht drauf?

    LG
  2. CPoly

    CPoly Mitglied Weizenbier Premium-User

    Das ist nicht möglich.


    Ausführlich: Der gesamte Code läuft im Browser des Besuchers, da hast du überhaupt keinen Einfluss drauf. Das ist bei jedem Spiel, auch außerhalb des Browsers, genauso. Nur dass sich Skript Sprachen leichter manipulieren lassen, als z.B. Assembler. Aber ich kenne auch Hardcore-Programmierer, die mittels Assembler Spiel-Clients umschreiben.

    Bei Multiplayer-Spielen hilft es nur, dass du die Spiellogik auf den Server verlagerst. Bei Nutzereingaben musst du dann mit gewissen Heuristiken versuchen zu Beurteilen, ob die Eingabe von einem Mensch oder einer Maschine gemacht wurden.
    Wenn das allerdings so einfach wäre, gäbe es in CS, TF2, WOW, etc. keine Cheater mehr.

    Edit: Übrigens brauchst du kein Firebug dazu. Einfach in die Adressleiste

    Code (Text):
    1.  
    2. javascript:for(var i = 0; i < 1000; i++) clicket();
    3.  
  3. einfach nur crack

    einfach nur crack mag Cookies & Kekse

    Man kann es sogar noch mehr vereinfachen und verallgemeinern: grundsätzlich ist es nicht möglich, dich vor Manipulationen zu schützen. Die Frage ist nur, wie schwer es ist, dein Skript zu manipulieren, und wieviele Menschen dazu in der Lage sind, dein Skript dementsprechend zu manipulieren.
  4. Bratkartoffel

    Bratkartoffel gebratene Kartoffel Premium-User

    Hi,

    alles was Client-seitig läuft kann manipuliert werden. Auch das Absenden der Daten an den Server kann am Schluss abgefangen und verändert werden.

    Kenne das Problem auch und soweit ich das sehe gibt es dagegen nur einen Schutz: Das ganze so komplex machen, dass der Cheater die Lust verliert sich das alles anzusehen und zu entwirren.

    Mach das ganze einfach so unübersichtlich wie möglich, viele Funktionen die keine logischen Namen haben. Also all das was man als "schlechten Programmierstil" auf jeden Fall vermeiden sollte ;) Variablen und Funktionen mit den Bezeichnern "a", "b", "xvcj" usw. Am Ende noch den / die Click-Counter irgendwie signieren / verschleiern und dann erst an den Server schicken.

    Zwischendrin auch mal ein paar "Dummy-Anfragen" an den Server per Ajax absetzen die ein paar Zahlen / Buchstaben zurückgeben und die auch noch irgendwie einbauen.

    Dei Frage ist halt, inwiefern sich der Aufwand lohnt. Die Wartbarkeit ist dann auch wieder ein weiterer Punkt ;)

    Grüße,
    BK
  5. einfach nur crack

    einfach nur crack mag Cookies & Kekse

    Schau dir mal diese Seite hier an: die minimiert die Größe deines Quelltextes und verändert auch die Namen der Funktionen sehr weit. Außerdem sieht dein Quelltext danach sehr unübersichtlich aus.
  6. deintag85

    deintag85 Erfahrenes Mitglied

    ja danke, das hab ich mir auch grad gedacht, lücken raus, alles in eine zeile und am besten in eine jquerydatei irgendwo in die mitte packen. da hat keiner bock reinzuschauen ^^ werd ich mal ausprobieren. naja wenn ich irgendwo ne lücke finde in der jquery datei. die ist ja auch pervers unübersichtlich. ^^
  7. einfach nur crack

    einfach nur crack mag Cookies & Kekse

    Naja, du kannst doch die übersichtliche Version von jQuery nutzen und dann dort eine Lücke suchen, an der du dein Skript einfügst. Danach kannst du doch das Ganze zusammen minimieren.
  8. CPoly

    CPoly Mitglied Weizenbier Premium-User

    Bratkartoffel sagt Danke.
  9. deintag85

    deintag85 Erfahrenes Mitglied

    ja aber wie funktioniert sowas? er fügt einfach sinnlose nichtsmachende funktionen hinzu? z.B. aus

    Code (Text):
    1. ich bin ein javascript code
    wird dann
    Code (Text):
    1. _='ich bin ein javascript code';for(Y=0;$=''[Y++];)with(_.split($))_=join(pop());eval(_)
    da kriegt man doch angst wenn man dann viele zeilen code verschleiern möchte und am ende hast du dann 1000 zeilen nonsense, den sich kein schwein anguckt und irgendwo ist da nen wurm drin ^^
  10. deintag85

    deintag85 Erfahrenes Mitglied

    irgendwie steh ich grad auf dem schlauch. ich hab mein code nun irgendwo im jquery versteckt, natürlich nicht innerhalb einer function sondern irgendwo dazwischen. aber es lässt sich nicht mehr normal ausführen. das scheint doch nicht so einfach zu sein wie angenommen. dachte das wäre leicht unkompliziert...

    --edit
    eigentlich schwachsinn das noch verstecken zu wollen nachdem man das mit dem hier http://www.iteral.com/jscrush/ komplett unkenntlich machen kann ^^ also eigentlich abgeschlossenes thema
    Zuletzt bearbeitet: 19. März 2012
  11. Lime

    Lime frisch fruchtig

    Jetzt mal ernsthaft... Das Zeug mit dem jscrusher funktioniert?! Da kommt so ein "bullshit" raus, wovon ich selber nicht mal annähernd etwas verstehe, und das soll funktionieren? Genial.

    €: Also eins steht fest. jQuery packt er nicht. :)
    Zuletzt bearbeitet: 19. März 2012

Diese Seite empfehlen