Ist für ein MMO Kenntnisse über Hacking-Mechanismen erforderlich?

10

Angenommen, ich habe geplant, in Zukunft (nicht jetzt! Es gibt eine Menge, die ich zuerst lernen muss) an einem Gruppenprojekt teilzunehmen, das ein Massively Multiplayer Online Game (mmo) machen würde, und mein Job wäre das Networking Portion. Ich bin nicht so vertraut mit Netzwerkprogrammierung (ich habe ein sehr einfaches Buch über PHP, MYSQL gelesen und ein bisschen mit WAMP rumgespielt ).

Sollte ich mich während meines Studiums von PHP und MYSQL mit Hacking befassen? Hacking wie beim Port-Scannen, Router-Hacking usw. In MMOs versuchen die Leute immer zu betrügen, Bots und so weiter, aber das schlimmste Szenario wäre, wenn jemand die Datenbanken hackt. Dies ist nur meine Vorstellung davon, ich weiß es wirklich nicht. Ich verstehe das Netzwerk jedoch ziemlich gut, wie Subnetze / Ports / IPs (lokal / global) / etc.

Sollte ich Ihrer beruflichen Meinung nach (wenn Sie das Thema verstehen, klären Sie mich auf) etwas über diese Dinge lernen, um der Möglichkeit entgegenzuwirken, dass dies geschieht?

Gibt es unter den von mir erwähnten Dingen (Port-Scannen, Router-Hacking) noch etwas, das sich auf das Hacken bezieht und das ich untersuchen sollte? Ich bin mit den schädlichen / Sicherheitsaspekten des Netzwerks nicht allzu vertraut.

Und eine Anmerkung: Ich bin kein Kind, das versucht zu lernen, wie man hackt. Ich möchte nur so viel wie möglich lernen, bevor ich aufs College gehe, und ich muss wirklich wissen, ob ich das studieren muss oder nicht.

Gabriel
quelle
10
Das Schreiben von Back-End-Serversystemen, die auf Zahlen skaliert werden können, die groß genug sind, um als "massiv" eingestuft zu werden, ist für Sie das viel größere Problem als das Hacken, wenn Sie "mit der Netzwerkprogrammierung nicht so vertraut sind". Sind Sie sicher, dass Sie versuchen, ein MMO zu erstellen und nicht nur ein reguläres Multiplayer-Spiel?
1
Aha; Der Wortlaut Ihrer Frage klingt wirklich so, als würden Sie jetzt versuchen, an diesem MMO zu arbeiten.
7
Sie sind also nicht mit Netzwerken vertraut, planen ein MMO (was das Schwierigste ist, das Sie planen können) und fragen sich, ob Sie wirklich lernen müssen, wie Sie sich gegen Hacker verteidigen können. Äh. Natürlich tust du das und das weißt du. Was bringt es, das zu fragen?
o0 '.
2
Verwandte, gamedev.stackexchange.com/a/21598/6937 Kurze Antwort: Wenn Sie jemals von iterativer Entwicklung gehört haben, können Sie das Lernen auf die gleiche Weise betrachten. Sicherheit funktioniert in der Regel nachträglich als Add-On. Bevor ein sicheren MMO - Server zu machen, sondern nur ein mmo - Server machen, bevor das zu tun, lesen Sie die Antwort auf den verlinkten Beitrag
brandon
1
Dies ist wie bei einem 14-Jährigen, der Präsident werden möchte und fragt, welche Krawatte am besten zu seinem zukünftigen Anzug passt. Dieses Kind wird wahrscheinlich nicht der Präsident sein, und selbst wenn er es wäre, hätte er wichtigere Probleme als das Unentschieden. Sie werden wahrscheinlich kein MMORPG mit einem "Gruppenprojekt" erfolgreich erstellen, und wenn Sie dies tun, haben Sie viel größere Probleme als dieses.
Thomas Bonini

Antworten:

16

Ja, jemand (in der Tat mehrere Personen) im Team, der ein Multiplayer-Spiel entwickelt, unabhängig von seiner Größe, sollte über fundierte Kenntnisse der Netzwerksicherheitskonzepte sowohl auf Hardware- als auch auf Softwareebene verfügen.

Dies gilt insbesondere für Spiele, bei denen die Agentur viel beharrlich bleibt, da dies eine Investition des Spielers darstellt und folglich ein lukratives Ziel für Hacker darstellt.

Die Teilnahme an Kursen zu Netzwerk / Netzwerksicherheit / allgemeiner Sicherheit (Krytographie usw.) am College ist hilfreich, um Ihnen das erforderliche Hintergrundwissen zu vermitteln, um einer der oben genannten Entwickler zu sein.


quelle
11

Etwas über die Sicherheit zu wissen , ist eine gute Idee , bevor Sie versuchen , ein Multiplayer - Spiel zu schreiben, aber Dinge wie Port - Scanning und Router - Hacking oder sogar Kryptographie, sind nicht , was Sie in diesem Stadium ein Blick in sein sollte.

Die Dinge, die Sie lernen sollten, sind Vertrauen , Validierung und Robustheit . Ein bisschen über Psychologie zu wissen, insbesondere über Herausforderungen und Belohnungen, ist auch keine schlechte Sache. Ich kann Ihnen in einer kurzen Antwort wie dieser nicht wirklich viel davon beibringen, aber hier sind einige Tipps, um Ihnen den Einstieg in die sichere Programmierung zu erleichtern:

  • Behandeln Sie Eingaben von außerhalb Ihrer direkten Kontrolle so, als ob sie nicht Ihren Erwartungen entsprechen. Dies umfasst alle Benutzereingaben, alles, was Sie über das Netzwerk erhalten, und sogar alles aus anderen Teilen Ihrer Codebasis. Versuchen Sie, in den Köpfen zu bekommen, nicht darüber nachzudenken , was die Eingabe sollte enthalten, oder auch über das, was ein Angreifer könnte man stattdessen füttern, sondern einfach über das, was die Eingabe könnte möglicherweise sein , und wie man sicher jede mögliche Eingabe handhaben Sie bekommen könnten.

  • Da Sie PHP und MySQL erwähnen, sollten Sie sich zunächst mit SQL-Injection- und Cross-Site-Scripting- Angriffen befassen . Wenn Sie auch mit einfachen Sprachen wie C vertraut sind, sollten Sie sich mit Pufferüberlaufangriffen befassen. Denken Sie nicht nur darüber nach, wie Sie sie verhindern können - denken Sie darüber nach, wie Sie Ihren Code schreiben würden, damit solche Fehler einfach nicht passieren können, sei es durch Zufall oder durch Bosheit. Ihre Programmiersprache verfügt mit ziemlicher Sicherheit über die Tools, mit denen Sie dies tun können, wenn Sie nur lernen, sie so zu verwenden, wie sie sollen.

  • In einem Multiplayer-Spiel läuft vermutlich Client-Code auf dem Computer des Spielers. Lassen Sie sich bei dem Gedanken , dass ein ausreichend intelligent und entschlossen Benutzer wird immer der Lage sein , einen solchen Code zu gefährden und machen es zu tun , was sie wollen. Vertraue dem Kunden nicht , wenn du es vermeiden kannst. Wenn Sie es nicht vermeiden können, vertrauen Sie ihm nur so weit wie nötig.

  • Versuchen Sie, nicht alle Eier in einen Korb zu legen. Wenn Sie Ihr Spiel, Ihre Website und Ihre Datenbank nicht auf separaten Servern ausführen können, führen Sie sie zumindest unter separaten Konten aus und stellen Sie sicher, dass keiner von ihnen mehr Zugriff aufeinander hat, als er benötigt. OK, vielleicht benötigen sowohl Ihr Spiel als auch Ihre Website Zugriff auf Ihre Benutzerdatenbank, aber sie benötigen sicherlich keinen Administratorzugriff darauf, oder? Vielleicht brauchen sie nicht einmal mehr als nur Lesezugriff. Selbst wenn Sie zunächst keine so strenge Unterteilung erzwingen, sollten Sie Ihr Spiel so gestalten, dass es später eingerichtet werden kann. Lassen Sie Ihren Spieleserver keinen Administratorzugriff auf die Datenbank erfordern . Denken Sie daran, dass jede Software Fehler aufweist und früher oder später jemand dies tun wird Finde eine Sicherheitslücke in deiner.

Im Allgemeinen muss man bei der Sicherheit erkennen, dass es sich um eine Denkweise handelt . Es geht nicht darum, die neuesten Sicherheits-Schlagworte zu kennen oder wie die neuesten Angriffe funktionieren oder zu versuchen, vorauszusehen, was Hacker tun werden, bevor sie es tun (obwohl all diese Dinge von Nutzen sein können).

Bei der tatsächlichen sicheren Programmierung geht es darum, zu lernen, wie Sie die Tools so verwenden, wie sie verwendet werden sollen, Ihren Code in Teile zu unterteilen, die so klein sind, dass Sie verstehen, was jeder von ihnen tut (und sicherzustellen, dass sie es richtig machen, auch wenn andere Teile sind kompromittiert) und über das Schreiben Ihres Codes, um das Unerwartete zu erwarten. Wenn Sie all das tun, werden Sie nicht brauchen , zu wissen , was Hacker könnten versuchen, weil man auf alles vorbereitet sein werden.

Ilmari Karonen
quelle
8

Persönlich würde ich mich keine Sorgen um Hacker noch .

Das Grundprinzip ist einfach: Sie werden keine Hacker / Betrüger bekommen, bis Sie ein ziemlich beliebtes Spiel sind. dh die Zeit wert zu hacken / betrügen. Warten Sie, bis Sie zuerst ein Spiel eingerichtet haben und Einnahmen eingehen, um diese Art von Dingen zu finanzieren.

Sie können viel (ich meine, viel) Zeit damit verbringen, Ihren Code zu beweisen, dass er nicht gehackt oder betrogen werden kann. Oder Sie können regelmäßige Offsite-Sicherungen durchführen (was Sie sowieso tun sollten) und regelmäßige Wiederherstellungspunkte erstellen. Wenn ein Exploit passiert, schließen Sie ihn.

corsiKa
quelle
1
Ich stimme zwar zu, dass ein gutes Spiel Vorrang vor einem sicheren haben sollte , aber ich würde sagen, dass ein gewisses Maß an Bewusstsein für allgemeine Sicherheitsprobleme und allgemeine Best Practices von Anfang an gut ist. Andernfalls könnten Sie sich in einer unhaltbaren Situation befinden, wenn Ihr Spiel startet. Wenn Ihr ursprüngliches Design grundsätzlich unsicher ist, kann der Versuch, es später zu reparieren, wie der Kampf gegen eine Hydra sein: Jedes Mal, wenn Sie einen Exploit schließen, finden die Betrüger zwei weitere, und die einzige Möglichkeit, dies zu stoppen, besteht möglicherweise darin, einen wesentlichen Teil neu zu entwerfen und neu zu schreiben Ihrer Codebasis von Grund auf neu.
Ilmari Karonen
1
@IlmariKaronen, ich stimme im Konzept zu, aber nicht in der Praxis. Angesichts des Kontextes des Fragestellers müssen sie sich darauf konzentrieren, das Networking im Allgemeinen zu lernen. Wenn Sie Networking lernen, lernen Sie in der Regel etwas über Kryptographie. Sie stehen am Anfang. Sicherheit ist nur dann wichtig, wenn Sie wissen, was Sie tun, und etwas schaffen, das es wert ist, gesichert zu werden. Leute, die diese Art von Frage stellen, müssen dahin gelangen, wo sie sogar etwas schaffen können, das es wert ist, zuerst
gesichert zu werden
1
@IlmariKaronen Ich stimme voll und ganz zu: Wenn Sie die Sicherheit missachten, gehen Sie zu Sony. Sony hat seine Katastrophe überlebt, nur weil sie so groß war, aber jeder andere wäre wahrscheinlich FUBAR geworden.
o0 '.
2
@ Lohoris. Ich werde es danach in Ruhe lassen, aber das ist nicht Sony. Dies ist ein Typ, der sagte, er lerne gerade die Grundlagen des Networking. Lernen Sie Sicherheit, sobald Sie verstanden haben, was Sie sichern ...
Brandon
Ja - dies ist die beste Antwort: Wenn Ihr Spiel sehr beliebt wird und unter Sicherheitsproblemen leidet, können Sie jederzeit zusätzliche Entwickler usw. einstellen und das Netzwerkschema überarbeiten, um es sicherer zu machen. mach dir später Sorgen.
MarkR