2016-06-08 3 views
0

Если объект JSON/String был введен с ненадежными данными (например, вставлен дополнительный ключ), делает ли GSON безопасную сериализацию, которая ограничивает и избегает ненадежных данных?Является ли GSON безопасной сериализацией?

Пожалуйста, смотрите этот код link (хотя он находится на C#) в качестве примера впрыска JSON.

Вот как я синтаксический анализ принятых данных:

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

Я на самом деле не знаю, как работает сейф сериализация или ограничивающие ненадежные данные. Рекомендация/ссылка, связанная с этим, очень ценится.

+0

Пожалуйста, объясните, что означало бы «безопасная сериализация» в этом контексте. Например, вы можете отредактировать свой вопрос, чтобы предоставить [mcve], где вы показываете некоторый JSON, который «был введен с ненадежными данными» вместе с вашим кодом Java, который использует Gson для анализа этого JSON. – CommonsWare

+0

См. Обновленный вопрос. – sticky

ответ

1

Gson собирается разобрать все, что находится в sampleString, и применить его к вашему экземпляру T. sampleString - это строка JSON. У Гссона нет способа узнать, был ли этот JSON «введен неверными данными», потому что Gson не знает, что есть и не является «ненадежным».

Однако Gson только обратит внимание на поля, определенные на T и его суперклассах. Если sampleString является объектом JSON, и кто-то взломал JSON, чтобы он содержал ключ с именем bogeyman, а T не имеет поля bogeyman (и его не унаследовал), bogeyman будет проигнорирован, потому что Gson его негде его поместить.

Следовательно, убедитесь, что T написан так, что он принимает действительные ключи. Возможно, T только имеет поля для действительных ключей, или вы помечаете другие поля как transient, или выполните другие шаги, как указано в the user guide.

Смежные вопросы