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.
quelle
Antworten:
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
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.
quelle
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.
quelle