Memory Spiel | Sicherheit

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Memory Spiel | Sicherheit

    Hallo,

    Ich werde demnächst ein Memory Spiel programmieren. Grundsätzlich weiß ich schon wie ich das ca. Umsetzen will. Die Frage für mich ist, ob man die Daten (Zeit, Versuche) einfach manupulieren kann bzw. wie kann ich mich dagegen Schützen.

    Ansatz:
    Grundsätzlich wird das ganze Spiel (Karten aufbauen,...) mit JavaScript gemacht (was sich ja dafür prima eignet) nur die Daten werden dann in die Datenbank gespeichert. (Zeit, Versuche...)

    Ich hab mir das so vorstellt:
    1) Besucher kommt auf Seite, muss zuerst Formular ausfüllen (Name), nachdem Absenden der Daten beginnt das Spiel (Muss während desen den Namen merken, einfach Daten in JS Variable schreiben?)

    2) Während das Spiel läuft die Zeit und der rest funktoniert mit JS (gleiche paare finden,...)

    3) Nachdem alle Paare richtig gefunden worden sind, will ich eben die Zeit und den namen in die Datenbank speichern. (Für die Highscore liste)

    Wo muss ich wie aufpassen das die Zeit nicht manipuliert (wie auch immer) werden kann?

    Da es ein Gewinnspiel wird und die Top 3 einen Preis dafür gewinnen kann ist mir dieses Thema ziemlich wichtig. Deswegen bin ich über jeden Hinweis bzgl. dem Thema Manipulation oder Ansatz dankbar.

    Ps.: Ich hoffe ich konnte mich klar ausdrücken =)

    mfg
    RKAN

  • #2
    Ich würde mir erst Mal keinen Kopf um die Zeit machen sondern um den Rest. Denn alles, was per JavaScript geschieht, lässt sich sehr leicht manipulieren. Und du glaubst gar nicht, wie einfallsreich Leute werden können, wenn etwas zu gewinnen gibt.

    Du musst also den jeweils aktuellen Spielstand immer serverseitig speichern (z.B. per Ajax. Und clientseitig darf es keinen Hinweis darauf geben, was möglicherweise unter den Karten ist. Hast du das schon bedacht?

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hallo Kropff,
      vielen Dank schonmal. Mir war schon von Anfang an klar das JS mir paar Kopfschmerzen zubereiten wird. Aber dennoch will ich das ganze erfolgreich umsetzen.

      Hab nicht richtig herauslesen können was du mit "den jeweils aktuellen Spielstand immer serverseitig speichern" genau meinst (welche Daten speichern). Meinst du das ich jede Sekunde eine Ajax Abfrage an den Server schicken soll? Wenn du mir das etwas visuell erklären würdest, würde ich es besser verstehen.

      Die Karten kommen aus einem Array, die werden dupliziert und gemischt auf das Feld gelegt. Da habe ich auch nicht wirklich eine Ahnung, wollt eigentlich die Bilder verstecken und erst bei einem Klick werden sie soszusagen umgedreht. Aber ich glaub das würde sich auch leicht manupulieren lassen....hmm schwieriges Thema.

      Würd mich freuen wenn du mir die richtige Richtung zeigst =)


      Ps.: Finde deine Seite echt informativ, alles verständlich geschrieben was man heutzutage schwer findet. Hab schon vieles daraus gelernt auch vielen vielen Dank dafür =)
      Zuletzt geändert von RKAN; 20.04.2011, 15:15.

      Kommentar


      • #4
        Clientseitig darf nichts, aber auch garnichts gespeichert sein. Da hast nur zugedeckte Karten. Wenn jetzt jemand auf eine klickt, dann sendest du einen Ajax-Request ab. Z.B. so:

        Karte Karte Karte
        Karte Karte Karte
        Karte Karte Karte

        Die bekommen einfach nur eine Nummer, also meinetwegen von 1 bis 9. Und die übermittelst du. Dann sagt dir das PHP-Javascript, um welche es sich handelt. Dann klickt der nochmal auf eine Karte, Nummer übergeben, das PHP-Script sagt, welche Karte und ob die übereinstimmt. Und so weiter und so fort.

        Peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Aber selbst das lässt sich umgehen. Nachdem AJAX-Abfragen nichts anderes als normale HTTP-Requests sind, können die auch von einem selbstprogrammierten Tool stammen. Jetzt braucht man nur noch einen Bot programmieren, der "spielt", und einen halbwegs durchdachten Algorithmus (sollte bei Memory nicht wirklich aufwändig sein) der die dafür benötigte Zeit und Anzahl an Request aufs Minimum reduziert.

          Selbst wenn man nach jedem Request eine Zwangspause einfügt ist man mit dieser Methode immer noch schneller als jeder menschliche Spieler.
          Zuletzt geändert von h3ll; 20.04.2011, 16:31.

          Kommentar


          • #6
            Stimmt. Aber es erschwert die Sache schon mal. Und darum geht es. Der zu betreibende Aufwand sollte in keinerlei Verhaltnis zum möglichen Gewinn stehen.

            Beispiel (ein etwas dummes, zugegeben)
            1. Preis Einkaufsgutschein bei Rewe für 50€
            2. Preis Einkaufsgutschein bei Rewe für 30€
            3. Preis Einkaufsgutschein bei Rewe für 10€

            Macht zusammen 90 Öcken. Wenn man nun dafür etwa 40 Stunden Arbeit investieren muss, um das System zu umgehen, so lohnt sich das einfach nicht. Außerdem war die von mir beschriebene Vorgehensweise nur der erste Schritt. Da muss man noch etliche Zusatzmaßnahmen einbauen.

            Peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Zitat von Kropff Beitrag anzeigen
              Clientseitig darf nichts, aber auch garnichts gespeichert sein. Da hast nur zugedeckte Karten. Wenn jetzt jemand auf eine klickt, dann sendest du einen Ajax-Request ab. Z.B. so:

              Karte Karte Karte
              Karte Karte Karte
              Karte Karte Karte

              Die bekommen einfach nur eine Nummer, also meinetwegen von 1 bis 9. Und die übermittelst du. Dann sagt dir das PHP-Javascript, um welche es sich handelt. Dann klickt der nochmal auf eine Karte, Nummer übergeben, das PHP-Script sagt, welche Karte und ob die übereinstimmt. Und so weiter und so fort.

              Peter
              Ok jetzt weiß ich schon in welche Richtung ich denken muss, werd das mal in Praxis umsetzen und testen. Nur die Karten kan ich ja nur mit CSS verdecken oder? Wäre ja wieder in einiger massen umgehbar ne?

              Ich glaub da muss ich eher auch die Karten in die Datenbank speichern und sie mit Nummern versehen...und vom Client aus werden nur die Nummern mitgeschickt und anhand dessen weiß ich welche Karte es ist und kann sie anzeigen. (Das meinst du wahrscheinlich mit "Clientseitig darf nichts, aber auch garnichts gespeichert sein")

              @h3ll
              Grundsätzlich will/kann ich das System sowieso nicht 100% sicher machen. Es soll halt einen gewissen Schutz gegen die einfachen manipulations Versuche bieten.

              Zitat von Kropff Beitrag anzeigen
              Außerdem war die von mir beschriebene Vorgehensweise nur der erste Schritt. Da muss man noch etliche Zusatzmaßnahmen einbauen.
              Kannst du mir da auch Hinweise geben? Damit ich mich vorher schlau machen kann?

              Kommentar


              • #8
                Zitat von Kropff Beitrag anzeigen
                Wenn man nun dafür etwa 40 Stunden Arbeit investieren muss, um das System zu umgehen, so lohnt sich das einfach nicht.
                Kommt immer auf die Fähigkeiten des Programmierers an. Ich kenn jemanden, der hat schon aufwändige Flash-Spielchen in weniger als einer Stunde gehackt, bei denen man deutlich größere Wertpreise gewinnen konnte (zB. moderne Handys). Allerdings hat er den Sachverhalt hinterher immer aufgeklärt, weil es ihm nicht um den Gewinn ging. Für den war das so eine Art Sport. Der hat zig solcher Spiele und Wettbewerbe gehackt und hätte theoretisch Tausende Euro damit abräumen können.

                Kommentar


                • #9
                  Zitat von RKAN Beitrag anzeigen
                  Nur die Karten kan ich ja nur mit CSS verdecken oder?
                  Nö, du änderst den Pfad des Bildes per JavaScript.

                  Peter
                  Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                  Meine Seite

                  Kommentar


                  • #10
                    Zitat von RKAN Beitrag anzeigen
                    Kannst du mir da auch Hinweise geben?
                    Solche Maßnahmen gibt es wie Sand am Meer. Sessions (brauchst du eh), Hashwerte, zusätzliche Cookies, Anmeldung erst nach Eingabe einer Mail, die man bestätigen muss und was weiß ich nicht. Da sind deiner Phantasie keine Grenzen gesetzt.
                    Zitat von RKAN Beitrag anzeigen
                    Damit ich mich vorher schlau machen kann?
                    Hättest du das nicht schon vor deinem Thread machen sollen?

                    Peter
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Zitat von h3ll Beitrag anzeigen
                      Kommt immer auf die Fähigkeiten des Programmierers an. Ich kenn jemanden, der hat schon aufwändige Flash-Spielchen in weniger als einer Stunde gehackt, bei denen man deutlich größere Wertpreise gewinnen konnte (zB. moderne Handys).
                      Tja, solche Leute gibt es halt. Das hängt imho aber immer auch vom Auftraggeber des Spiels ab. Wenn der das richtig sicher haben möchte, dann muss er dafür auch bezahlen. Und da hapert es dann meistens schon. Wir haben Spiele immer so programmiert, dass man ein Ziel erreichen musste. Und wer das geschafft hatte, konnte an einer Auslosung teilnehmen. War bombensicher, da das jeder Dödel irgendwann schaffte.

                      Peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        Zitat von Kropff Beitrag anzeigen
                        Solche Maßnahmen gibt es wie Sand am Meer. Sessions (brauchst du eh), Hashwerte, zusätzliche Cookies, Anmeldung erst nach Eingabe einer Mail, die man bestätigen muss und was weiß ich nicht. Da sind deiner Phantasie keine Grenzen gesetzt.

                        Hättest du das nicht schon vor deinem Thread machen sollen?

                        Peter
                        Ok hab jetzt mit den zusätzlichen Maßnahmen nicht an Sessions,..etc. gedacht, natürlich kommen die auch noch rein...dachte du meinst evtl. etwas anderes damit.

                        Ich hab mich natürlich vorher bissi schlau gemacht, nur es gibt eben manche Themen die man nur mit den richtigen Suchbegriffen findet oder einen kleinen Schubser in die Richtung braucht.

                        Ich werd mich mal am Abend hinsetzen und das ganze mal in die Praxis umsetzen und hier noch aufjedenfall noch reinschreiben Damit ich eine Meinung von den Profis habe =)

                        Kommentar

                        Lädt...
                        X