Like Tree1Danke
  • 1 Beitrag von CPoly
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
1154
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    deintag85 ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Ort
    Mainz
    Beiträge
    125
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    
    var counter = 0;
    function clicket() {
            counter = counter + 1;
            if(counter == 1) {
                starttime();
            }
    }
    usw...
    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. #2
    CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.713
    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 :
    1
    
    javascript:for(var i = 0; i < 1000; i++) clicket();
     

  3. #3
    Avatar von einfach nur crack
    einfach nur crack ist offline mag Cookies & Kekse
    Registriert seit
    May 2007
    Ort
    ::1
    Beiträge
    2.427
    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.
     
    Wir alle hier helfen gerne in unserer Freizeit weiter und versuchen Probleme gemeinsam zu lösen. Deshalb wäre es nett, wenn man das entsprechend mit einer positiven Bewertung oder einem Danke honoriert.

    Bei folgenden Sachen kann ich Dir übrigens helfen:
    PHP
    JavaScript
    Ruby
    CoffeeScript
    CSS
    – Webtechnologien
    – UNIX-Shell

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  4. #4
    Avatar von Bratkartoffel
    Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.758
    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
     
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"


    Meine Projekte sind OpenSource auf Github

  5. #5
    Avatar von einfach nur crack
    einfach nur crack ist offline mag Cookies & Kekse
    Registriert seit
    May 2007
    Ort
    ::1
    Beiträge
    2.427
    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.
     
    Wir alle hier helfen gerne in unserer Freizeit weiter und versuchen Probleme gemeinsam zu lösen. Deshalb wäre es nett, wenn man das entsprechend mit einer positiven Bewertung oder einem Danke honoriert.

    Bei folgenden Sachen kann ich Dir übrigens helfen:
    PHP
    JavaScript
    Ruby
    CoffeeScript
    CSS
    – Webtechnologien
    – UNIX-Shell

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  6. #6
    deintag85 ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Ort
    Mainz
    Beiträge
    125
    Zitat Zitat von einfach nur crack Beitrag anzeigen
    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.
    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. #7
    Avatar von einfach nur crack
    einfach nur crack ist offline mag Cookies & Kekse
    Registriert seit
    May 2007
    Ort
    ::1
    Beiträge
    2.427
    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.
     
    Wir alle hier helfen gerne in unserer Freizeit weiter und versuchen Probleme gemeinsam zu lösen. Deshalb wäre es nett, wenn man das entsprechend mit einer positiven Bewertung oder einem Danke honoriert.

    Bei folgenden Sachen kann ich Dir übrigens helfen:
    PHP
    JavaScript
    Ruby
    CoffeeScript
    CSS
    – Webtechnologien
    – UNIX-Shell

    ... noch was: falls du mit dem Thema hier fertig bist, dann kannst du es auch als erledigt markieren.

  8. #8
    CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.713
    Da kann ich noch http://www.iteral.com/jscrush/ empfehlen.
    Bratkartoffel bedankt sich. 

  9. #9
    deintag85 ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Ort
    Mainz
    Beiträge
    125
    Zitat Zitat von CPoly Beitrag anzeigen
    Da kann ich noch http://www.iteral.com/jscrush/ empfehlen.
    ja aber wie funktioniert sowas? er fügt einfach sinnlose nichtsmachende funktionen hinzu? z.B. aus

    Code :
    1
    
    ich bin ein javascript code
    wird dann
    Code :
    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. #10
    deintag85 ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Ort
    Mainz
    Beiträge
    125
    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
    Geändert von deintag85 (19.03.12 um 21:33 Uhr)
     

  11. #11
    Avatar von Lime
    Lime ist offline frisch fruchtig
    Registriert seit
    Jul 2011
    Beiträge
    581
    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.
    Geändert von Lime (19.03.12 um 21:56 Uhr)
     

Ähnliche Themen

  1. Firebug und CMS Entwicklung. Firebug öffnet sich automatisch
    Von Jan-Frederik Stieler im Forum HTML-Editoren
    Antworten: 4
    Letzter Beitrag: 29.01.11, 19:39
  2. Nicht gesetzten Wert mit Firebug oder WebDevToolbar ermitteln
    Von Jan-Frederik Stieler im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 09.01.09, 14:34
  3. Antworten: 3
    Letzter Beitrag: 02.08.07, 22:33
  4. Antworten: 28
    Letzter Beitrag: 27.10.05, 18:12