2017-07-12 4 views
1

Ich entschuldige mich, wenn diese Frage vage ist oder schon einmal gestellt wurde - ich weiß nicht genug darüber, was ich zu fragen versuche, um nach einer Antwort zu suchen.Wie schütze ich meinen Webserver vor gefälschten Anfragen?

Ich erstelle einen Backend-Server für ein Spiel, das auf HTTPS-Anfragen reagiert. Dieses Spiel ist an dieser Stelle ziemlich einfach - Sie haben einige Statistiken und ein Inventar, das auf verschiedene Arten überprüft und modifiziert werden kann. Ich möchte dafür ein Webinterface erstellen, mit dem Sie ein paar wichtige Aktionen ausführen können, die das Ändern Ihrer Charakterdaten beinhalten (Leveln, Statuspunkte vergeben, Inventar verwalten, etc.). Ich habe jedoch Bedenken! Ich mache mir Sorgen um Leute, die einen Blick auf den Quellcode dieser Webseite werfen, indem sie die Befehle zusammenfügen, die zum Beispiel einen Punkt zu einer Statistik oder einem Gegenstand zu Ihrem Inventar hinzufügen und diesen Befehl dann auf meinen Server "spoofen" damit sie ihre Charakterdaten unfair ändern können.

die HTTPS Traktandierung Inventar hinzufügen könnte wie folgt aussehen (man stelle es als onClick für einen Knopf oder etwas):

<button onClick=makeRequest("mydomain/characters/myCharacterName/add_inventory?Stick=1")>Get Stick</button> 

können Sie sehen, wie es trivial sein würde, dieses Stück zu holen Code auseinander und verwenden Sie es auf andere Weise. Wie kann ich diese Art von Funktionalität in einer Webseite bereitstellen, ohne die Möglichkeit zu geben, diese zu nutzen? Ich habe einige Optionen in Betracht gezogen, von denen keine so aussieht, als würden sie funktionieren. Ich denke, die Antwort könnte damit zu tun haben, einen Hash der Anfrage als einlösbares "Token" einzubauen, aber ich bin mir nicht sicher. Jeglicher Beitrag dazu wäre sehr zu begrüßen, da ich sicher bin, dass es ein ziemlich grundlegendes Konzept ist, das mir jetzt und in Zukunft helfen wird.

+0

Sollte es auf der Serverseite keine Logik geben, die weiß, welche Operationen möglich sind - und deshalb nichts anderes tun könnte. –

Antwort

1

Sie sollten alle Anfragen an Ihre Website mit einem Authentifizierungsmechanismus wie JSON web tokens authentifizieren.

Sie sollten Ihren Webserver auch sichern, indem Sie alle Eingaben wie URL-Parameter überprüfen. Wenn Ihr Webserver auf einen Datenbankserver zugreift, sollte er vorbereitete SQL-Abfragen verwenden. Dies sollte Ihren Server vor SQL-Injection schützen.

+0

Vielen Dank für Ihre Antwort. Nachdem ich etwas über JWTs gelernt hatte, konnte ich genug von dem Thema verstehen, um mehr über das Thema zu erfahren. Die spezifische Sicherheitslücke, um die es mir geht, wird als "Replay" - oder "Playback" -Angriff bezeichnet. Es kann bekämpft werden, indem man einige 'stateful' Maßnahmen einführt, wie die Vermeidung von doppelten Tokens durch die Verwendung eines Token-Identifikators (oder JTI bei Verwendung von JWTs), kombiniert mit einer Methode, einen Zeitstempel in den Token zu integrieren und nur den Server zu haben Akzeptieren von Token, die nach einer bestimmten Zeit ausgestellt wurden. Eine staatenlose Lösung wäre nett, aber es scheint keine zu geben. –

Verwandte Themen