Pregunta

Estoy planeando usar el método fromJson () de gson para analizar una cadena proveniente del navegador.¿Existe alguna vulnerabilidad potencial asociada con hacer eso?El tipo de datos al que estoy convirtiendo es relativamente simple, una lista y un booleano.Pero dado que gson usa la reflexión, ¿hay algo que deba tener en cuenta?

Por ejemplo, con jvm más antiguo (anterior a 6.24), se podría haber usado un ataque de DOS contra enteros, donde el analizador de enteros se colgaría.

¿Puede algún json inteligente hacer que gson comience a cargar las clases que debería ser?

¿Fue útil?

Solución

Lo que hay que tener en cuenta con Gson es qué tipo de constructor está utilizando (consulte deserializador / serializador personalizado)

Gson tiene otra debilidad, cuando está deserializando, (digamos que usa uno personalizado) es mejor que verifique el tipo de objeto que está pasando (use instanceof).

Otro punto principal: Gson convertirá automáticamente la variable según el tipo que se pasa.

es decir.{"var1": 1, "var2": "1"} El primero se convertirá en un número entero, el segundo se basará en una cadena, por lo tanto, estaría atento a la transformación de sus objetos.

Otros consejos

Por razones de seguridad, un desarrollador de proyectos de Gson recomendó no permitir que el código de deserialización cargue definiciones de clases especificadas por el usuario; la deserialización de elementos de tipo genérico debe controlarse cuidadosamente.

No es tan difícil escribir un analizador JSON, y cualquier versión de código abierto bien utilizada debería ser tan segura como se podría esperar.Por supuesto, el analizador podría contener un error que lo haga sujeto a saturación del búfer y cosas por el estilo, pero, nuevamente, la lógica es lo suficientemente simple como para que eso no debería suceder si el código está razonablemente bien escrito y bien revisado.

Un peligro mayor es que usted mismo podría no inspeccionar correctamente los resultados del análisis y aceptar, digamos, un número que está fuera del rango de su aplicación o una cadena que es demasiado larga.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top