2016-06-08 11 views
0

Wenn ein JSON-Objekt/String mit nicht vertrauenswürdigen Daten (z. B. eingesetzter zusätzlicher Schlüssel) injiziert wurde, führt GSON eine sichere Serialisierung durch, die nicht vertrauenswürdige Daten abgrenzt und entkommt?Führt GSON eine sichere Serialisierung durch?

Als Beispiel für injizierten JSON sehen Sie bitte link (obwohl es auf C# ist).

Hier ist, wie ich die empfangenen Daten bin Parsen:

T object = gson.<T>fromJson(sampleString, modelObject); 

ich nicht wirklich bewusst bin, wie eine sichere Serialisierung oder abgrenzt nicht vertrauenswürdige Daten arbeitet. Vorschläge/Referenzen, die damit verbunden sind, werden sehr geschätzt.

+0

Bitte erläutern Sie, was "sichere Serialisierung" in diesem Zusammenhang bedeuten würde. Sie können beispielsweise Ihre Frage so bearbeiten, dass ein [mcve] bereitgestellt wird, in dem Sie JSON anzeigen, dem "nicht vertrauenswürdige Daten hinzugefügt wurden", zusammen mit Ihrem Java-Code, der Gson zum Parsen dieses JSON verwendet. – CommonsWare

+0

Bitte lesen Sie die aktualisierte Frage. – sticky

Antwort

1

Gson wird analysieren, was auch immer in sampleString ist und wenden Sie Ihre Instanz von T an. sampleString ist eine Zeichenfolge von JSON. Gson kann nicht wissen, ob JSON "mit nicht vertrauenswürdigen Daten" injiziert wurde, weil Gson nicht weiß, was "nicht vertrauenswürdig" ist und was nicht.

Allerdings wird Gson nur auf die Felder achten, die auf T und seinen Superklassen definiert sind. Wenn sampleString ein JSON-Objekt ist und jemand JSON mit einem Schlüssel mit dem Namen bogeyman gehackt hat und T kein Feld bogeyman hat (und eines davon nicht geerbt hat), wird bogeyman ignoriert, weil Gson nirgendwo hinkommt.

Stellen Sie daher sicher, dass T so geschrieben ist, dass es nur gültige Schlüssel akzeptiert. Vielleicht T nur hat Felder für gültige Schlüssel, oder Sie markieren andere Felder als , oder führen Sie andere Schritte wie in the user guide beschrieben.

Verwandte Themen