Opções de configuração padrão do GraphQL Query Executor
Saiba como resolver erros de Negação de serviço em consultas do GraphQL causados por opções de analisador padrão na atualização mais recente do GraphQL Java.
Descrição description
Ambiente
Adobe Experience Manager
Problema/Sintomas
A atualização mais recente do GraphQL-Java cria opções de analisador padrão que podem levar ao erro "Negação de serviço" InvalidSyntax ao executar consultas complexas do GraphQL. Essas validações foram introduzidas no GraphQL-Java para evitar ataques de Negação de serviço.
Para o contexto, essas limitações são definidas em https://github.com/graphql-java/graphql-java/blob/v20.3/src/main/java/graphql/parser/ParserOptions.java#L35.
Resolução resolution
Você pode corrigir o problema passando as opções personalizadas do analisador seguindo as etapas fornecidas:
-
Isso é válido para consultas muito grandes do GraphQL que retornariam um erro InvalidSyntax de"Negação de Serviço", começando com:
- AEM Cloud Service (limitação introduzida com a referência interna SITES-13906 na versão 2023.8 e solução alternativa introduzida na versão 2024.3) ou;
- AEM 6.5.21 (limitação e solução alternativa introduzidas com a referência interna SITES-17355)
-
Isso pode ser resolvido definindo a Configuração OSGI Apache Sling Default GraphQL Query Executor e ajustando os valores Máximo de tokens de consulta e Máximo de tokens de espaços em branco, dependendo das necessidades.
Isso deve ser feito como último recurso e os valores devem ser aumentados gradualmente até que as necessidades do projeto sejam atendidas.