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.