Datenbank über Verschlüsselung ansprechen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Datenbank über Verschlüsselung ansprechen

      Hallo. ;) Ich habe mich in letzter Zeit ein wenig mit Onlinespielen via GM beschäftigt, und bin dabei auf wirklich technische Fragen gestoßen. Erstmal möchte ich hier keine Sachen hören wie, 'Ey, du bist noch GML Anfänger und hast noch nie nen Spiel veröffentlicht.' ;) Lasst mich doch. Ich werde es versuchen.

      Das wichtigste bei einem Online Game ist wohl, dass die Daten gespeichert werden. ;) Sonst wär' das irgendwie dumm.

      Darum geht es auch schon. Wie bzw. wo könnte man Daten speichern?
      Es geht darum, das Spiel basiert auf Client & Server und nicht auf Peer To Peer, d.h. jeder Client ist über den Server verbunden. Auf diesem müssen die entsprechenden Daten dann auch liegen. ;) Die einfachste Möglichkeit wäre dabei MySQL, bei demselben sehe ich jedoch ein großes Problem. MySQL wird wohl am einfachsten über PHP angesprochen. Allerdings kann jeder ein PHP Script auch per Hand am Browser aufrufen, und somit irgendetwas eingeben lassen.
      Dateien sind auch nicht besonders das Wahre, wie also könnte man Daten abspeichern?
    • Um auf die MySQL Datenbank zuzugreifen braucht man die Daten, sprich Benutzername und Passwort.
      Und die sollten selbstverständlich nur auf dem Server gespeichert sein.
      Was spricht in deinen Augen gegen solch eine Datenbank ?
      Face in the wind, we're riding the storm
      We'll stay our course whatever will come
      ~~ Stay (Running) Wild ~~
    • Die Übertragung. Passwort und Username ist nicht schlimm, das wird sowie so übertragen. Aber in dem Projekt werden auch wichtige Dinge wie z.B. Items etc. eingetragen. Um auf die MySQL Datenbank zuzugreifen wird man wohl über PHP gehen müssen, nicht war? Und dort ist das Problem. Das PHP Script muss hierfür auf dem Server gespeichert sein. Wenn jetzt allerdings die Variable 'buy_item' mit dem Wert '6' über das Spiel übertragen wird, könnte man rein theoretisch auch den Wert '8' übertragen und ein viel wertvolleres Item in die DB eintragen. Verstanden?
    • Natürlich. Sollte man überprüfen. Nur gibt es immer noch einen Schönheitsfehler.

      Spieler hat die Vorraussetzungen erfüllt um Item 6 zu kaufen. -> Quest 7 erfüllt und 5000 Credits auf dem Konto.
      Spieler hat die Vorraussetzungen erfüllt um Item 8 zu kaufen. -> Quest 7 erfüllt und 570000 Credits auf dem Konto.

      Wenn ich jetzt überprüfe wird er nichts sagen, da der Spieler theoretisch Item 8 kaufen könnte.. Oder..Okay ich rede Mist. Na klar. Dann wird eben das andere abgebucht. :headtouch: Wenn mir jetzt nochmal jemand das MySQL tutorial geben könnte.
    • Es müsste eigentlich auch DLLs geben um direkt auf eine MySQL Datenbank zugreifen zu können.

      Wenn nicht gibt es auch noch das sogenannte SQLite das is dafür ausgelegt lokal zu arbeiten ohne einen Server einrichten zu müssen.
      sqlite.org/
      Da gäbe es dann auch nicht die genannten Probleme von dir ;)

      XML wäre auch noch eine Variante die sich aber nur bei kleinen Datenmengen lohnt, für große Projekte wäre XML zu langsam.

      Und ob jemand cheatet oder nicht hat im Prinzip auch nichts mit der Datenbank zu tun.
      Wenn man den Netzcode entschlüsselt kann man theoretisch so schon Variablen verändern beim übertragen.
      Um eine geeignete Gegenmaßnahme musst du dich dabei selber kümmern.
      Face in the wind, we're riding the storm
      We'll stay our course whatever will come
      ~~ Stay (Running) Wild ~~
    • So gesehen kann man fast alles ausheben. Aber danke für die Links, ich werde mal auf der GMC und im Internet suchen. Wenn es nicht anders geht, würde ich mich auch dransetzten 'ne eigene DLL in C++ dafür zu schreiben. Das müsste ich mit meinem jetzigen Wissen hinkriegen. Und SQLite wäre auch ne Idee. Mal schauen. XML fällt aber auf jeden Fall raus, da es zuviele Variabeln sind um die alle darüber zu übertragen. Vor allem da sich manche Variabeln verdammt schnell ändern. Aber danke für die Infos.
    • Ein uralter Trick um das übermitteln von "gefälschten" Daten zu verhindern: erzeuge aus allen möglichen Daten (Spielername, Geld, Spielzeit, Uhrzeit etc.) einen hash welcher mitgeschickt wird. Solange keiner weiß, welche Spieldaten du für die Hashberechnung verwendest, ist das sicher. Der Server macht dann nohcmal das gleiche und checkt ob der hash stimmt.

      EDIT: ach ja, Hash != Verschlüsselung. Etwas verschlüsseltes kann man wieder entschlüsseln, beim hash: keine Chance.