Pergunta

Estou planejando usar o método fromJson () do gson para analisar uma string proveniente do navegador.Existem vulnerabilidades potenciais associadas a isso?O tipo de dados para o qual estou convertendo é relativamente simples, um List e um booleano.Mas uma vez que gson usa reflexão, há algo para eu tomar cuidado?

Por exemplo, com o jvm mais antigo (anterior ao 6.24), um ataque DOS poderia ter sido usado contra inteiros, onde o analisador de inteiros travaria.

Algum json inteligente pode fazer o gson começar a carregar classes?

Foi útil?

Solução

O que deve ser observado com o Gson é o tipo de construtor que você está usando (consulte o desserializador / serializador personalizado)

Gson tem outro ponto fraco, quando você está desserializando (digamos, usando um personalizado), é melhor verificar o tipo de objeto que está passando (use instanceof).

Outro ponto principal: Gson converterá automaticamente a variável com base no tipo que está sendo passado.

ie.{"var1": 1, "var2": "1"} O primeiro será convertido em um inteiro, o segundo em uma string, portanto, eu ficaria atento à transformação de seus objetos.

Outras dicas

Por motivos de segurança, um desenvolvedor de projeto Gson recomendou não permitir que o código de desserialização carregue as definições de classe especificadas pelo usuário - a desserialização de coisas com tipo genérico deve ser controlada com cuidado.

Não é tão difícil escrever um analisador JSON, e qualquer versão de código aberto bem usada deve ser tão segura quanto se poderia esperar.Claro, o analisador pode conter um bug que o torna sujeito a saturação de buffer e coisas do gênero, mas, novamente, a lógica é simples o suficiente para que isso não aconteça se o código for razoavelmente bem escrito e revisado.

Um perigo maior é que você mesmo não inspecione adequadamente os resultados da análise e aceite, digamos, um número que está fora do intervalo de seu aplicativo ou uma string muito longa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top