Frage

Ich plane, die fromJson () -Methode von gson zu verwenden, um eine vom Browser kommende Zeichenfolge zu analysieren.Gibt es potenzielle Schwachstellen, die damit verbunden sind?Der Datentyp, in den ich konvertiere, ist relativ einfach, eine Liste und ein Boolescher Wert.Aber gibt es etwas, auf das ich achten muss, da Gson Reflexion verwendet?

Bei älteren JVMs (vor 6.24) könnte beispielsweise ein DOS-Angriff gegen Ganzzahlen verwendet worden sein, bei denen der Ganzzahl-Parser hängen würde.

Kann ein kluger JSON dazu führen, dass Gson Klassen lädt, die es sein sollte?

War es hilfreich?

Lösung

Bei Gson ist zu beachten, welche Art von Builder Sie verwenden (siehe benutzerdefinierten Deserializer / Serializer)

Gson hat eine weitere Schwäche: Wenn Sie deserialisieren (sagen wir, Sie verwenden eine benutzerdefinierte), sollten Sie besser nach dem Objekttyp suchen, den Sie übergeben (verwenden Sie instanceof).

Anderer Hauptpunkt: Gson konvertiert die Variable automatisch basierend auf dem übergebenen Typ.

dh.{"var1": 1, "var2": "1"} Die erste wird in eine Ganzzahl konvertiert, die zweite in eine Zeichenfolge, daher würde ich auf Ihre Objekttransformation achten.

Andere Tipps

Aus Sicherheitsgründen hat ein Gson-Projektentwickler empfohlen, den Deserialisierungscode nicht zum Laden benutzerdefinierter Klassendefinitionen zuzulassen. Die Deserialisierung generisch typisierter Objekte sollte sorgfältig kontrolliert werden.

Es ist nicht so schwer, einen JSON-Parser zu schreiben, und jede gut verwendete Open Source-Version sollte ungefähr so sicher sein, wie man es sich erhoffen kann.Natürlich könnte der Parser einen Fehler enthalten, der ihn einem Pufferüberlauf und dergleichen unterwirft, aber auch hier ist die Logik so einfach, dass dies nicht passieren sollte, wenn der Code einigermaßen gut geschrieben und gut überprüft ist.

Eine größere Gefahr besteht darin, dass Sie selbst die Ergebnisse der Analyse möglicherweise nicht ordnungsgemäß überprüfen und beispielsweise eine Zahl akzeptieren, die für Ihre Anwendung außerhalb des Bereichs liegt, oder eine zu lange Zeichenfolge.

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