Javascript securty: ein AJAX-Aufruf des Benutzers Bildschirmauflösung aufzeichnen, ist es möglich, gefälschte Zahlen zu verhindern?

StackOverflow https://stackoverflow.com/questions/908283

Frage

Dies ist eine Javascript-Sicherheitsfrage: Angenommen, eine Seite findet die Bildschirmauflösung des Computers, wie zum Beispiel 1024 x 768, und will einen AJAX-Aufruf verwenden, um diese Daten in die DB zu protokollieren

.

Gibt es eine Möglichkeit von gefälschten Daten tatsächlich zu verhindern in die DB eingetragen werden? Ich denke, was auch immer die HTML oder Javascript ist, kann der Benutzer umgekehrt den Code konstruieren, so dass einige gefälschten Zahlen in die DB eingetragen bekommen, oder ist es eine Möglichkeit, verhindert, dass es völlig geschieht? (100% sicher).

Aktualisieren : oder in einer ähnlichen Situation ... wenn ich ein einfaches Javascript-Spiel schreibe ... gibt es eine Möglichkeit für den Benutzer die Partitur von AJAX und liegt über ihre Punktzahl zurück zu senden?

War es hilfreich?

Lösung

Wenn Sie von der Annahme aus, dass der Benutzer mit dem Sie kommunizieren bösartig ist, dann nicht; es gibt nichts, was Sie tun können, um zu steuern, welche Daten sie Sie übergeben. Sicher nicht mit 100% iger Sicherheit -. Im schlimmsten Fall können sie Netzwerk-Tools verwenden, um neu zu schreiben oder ersetzen all „richtigen“ Inhalt mit dem, was sie wollen

Wenn Sie wollen einfach nur lässig Bösartigkeit verhindern, könnten Sie Ihren Code und / oder Daten verschleiern oder verschlüsseln. Dies wird nicht bestimmt Angreifer abzuschrecken.

Wenn Sie tatsächlich den realen Benutzern vertrauen, aber vermuten, dass andere vielleicht versuchen, sie zu imitieren, können Sie andere Techniken wie ein dynamischer Kanarienvogel verwenden: dem Benutzer eine Zufallszahl schicken, und wenn sie die gleiche Anzahl an Dich zurück, Sie wissen, dass es wirklich von ihnen kam. (Oder Sie von einem Mann-in-the-Middle-Angriff getroffen zu werden, aber hey,. Das ist, was SSL ist für)

Andere Tipps

Es ist nicht möglich, Benutzer daran zu hindern, alle Zahlen zu senden sie zurück von JavaScript mögen.

ich glaube, das Beste, was Sie tun könnten irgendeine Art von Kontrolle auf der Server-Seite ist nicht die Zahlen, um sicherzustellen, wieder aussehen wie eine realistische Auflösung gesendet.

Ich bin mir nicht sicher, warum jemand die Zeit verbringen würde, wenn diese Zahlen in erster Linie zu fälschen.

Ja, Sie richtig sind. Da Sie clientseitigen Code verwenden, müssen Sie das sagen, Computer des Benutzers (und damit der Benutzer) in der einen oder anderen, was auch immer Verschlüsselung oder Verschleierung Sie verwenden. Es gibt keinen Weg drum herum.

Für die Auflösung wäre es im Grunde unmöglich sein, zu bestimmen, ob es gültig Auflösung ist. Meine Auflösung ist in der Regel als 5120 x 1600 an den Server gesendet, was ziemlich unrealistisch scheint, aber es ist, weil die zwei Bildschirme werden oft gesendet, wie 1. Ansonsten gibt eine eine so große Vielfalt an Möglichkeiten in Bildschirmauflösungen und Bildschirmkonfigurationen ist, Sie‘ d wahrscheinlich eine Menge gültiger diejenigen entfernen, obwohl sie nur wenige sein könnten.

Für das Spiel der Gäste, können Sie zusätzliche Prüfungen tun, dass es komplizierter zu überprüfen machen. Dinge wie mehrere Mitteilungen der Partitur während des Spiels das Senden und erfordert X Nummer, um sicherzustellen, dass die empfangene Punktzahl gültig ist. (IE, muss man zwischen 200-300, erhalten 400-500, 700-800 und dann die Endnote von 1000.) Mit der Endnote, man könnte auch eine Art von verschlüsselten Wert haben, die nur einmal verwendet werden kann, oder dass enthält einige Daten mit einem CRC darauf. Im Grunde genommen, am Ende ist, andere Daten als nur die Punktzahl empfängt, vor allem für höhere Werte.

eine Antwort versuchen, indem Sie auf die Kommentare der Ausarbeitung von DOK gemacht, und selbst, gibt es eine klare Unterscheidung eine Anwendung zwischen Manipulation ‚betrügen‘ es aus etwas, ob es sich um ein Online-Geschäft sein, etwas billiger zu bekommen oder ein MMPORG zu mehr Erfahrung bekommen, als es so zu manipulieren, dass sie die Schnittstelle falsch machen und verringern die allgemeine Benutzerfreundlichkeit für diesen bestimmten (Hacker?) Benutzer.

Ihre Zeit besser wäre verbrachte auf andere Aspekte Ihrer Website konzentrieren. Ich empfehle, nicht die Benutzer von meiner Seite der HTML-manipulieren, um sie auf ihren Maschinen komisch aussehen, aber ich bin nicht alles los zu gehen und meine Server-Ausgabe verschleiern sie vor Schaden selbst zu stoppen. In Ihrem Fall reicht gegen vordefinierte sichere Werte überprüft, die Verwendung des DB zu machen, um den Benutzer zu gewährleisten, ist mit einer ‚erlaubt‘ Auflösung betrachten bringt unnötige Belastung für Ihre Anwendung und braucht Zeit, zu tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top