Question

Je prévois d'utiliser la méthode Fromjson () de GSON pour analyser une chaîne provenant du navigateur. Y a-t-il des vulnérabilités potentielles associées à cela? Le type de données auquel je convertit est relativement simple, une liste et un booléen. Mais depuis que GSON utilise la réflexion, y a-t-il quelque chose pour moi à surveiller?

Par exemple, avec le JVM plus ancien (pré 6,24), une attaque DOS aurait pu être utilisée contre des entiers, où l'analyseur entier serait suspendu.

Certains JSON intelligents peuvent-ils amener GSON à commencer à charger des cours qu'il devrait être?

Était-ce utile?

La solution

La chose à surveiller avec GSON est le type de constructeur que vous utilisez (voir désérialiseur personnalisé / sérialiseur)

GSON a une autre faiblesse, lorsque vous désérialisation, (disons en utilisant une personnalisée), vous feriez mieux de vérifier le type d'objet que vous passez (utilisez l'instance OFF).

Autre point principal: GSON convertira automatiquement la variable en fonction du type passé.

c'est à dire. {"var1": 1, "var2": "1"} Le premier sera converti en entier, le second en fonction d'une chaîne, donc je surveillerais la transformation de vos objets.

Autres conseils

Pour des raisons de sécurité, un développeur de projet GSON a recommandé de ne pas permettre au code de désérialisation de charger les définitions de classe spécifiées par l'utilisateur - la désérialisation des choses de type générique doit être soigneusement contrôlée.

Ce n'est pas si difficile d'écrire un analyseur JSON, et toute version open source bien utilisée devrait être aussi sûre que l'on pourrait l'espérer. Bien sûr, l'analyseur pourrait contenir un bogue qui le fait soumettre à un dépassement de tampon et autres, mais, encore une fois, la logique est assez simple pour que cela ne se produise pas si le code est raisonnablement bien écrit et bien examiné.

Un danger plus important est que vous ne pourriez pas inspecter correctement les résultats de l'analyse et accepter, disons, un nombre qui est hors de portée pour votre application, ou une chaîne trop longue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top