Opzioni di configurazione predefinite di GraphQL Query Executor
Scopri come risolvere errori Denial of Service nelle query GraphQL causati dalle opzioni del parser predefinite nell'ultimo aggiornamento Java di GraphQL.
Descrizione description
Ambiente
Adobe Experience Manager
Problema/Sintomi
L'ultimo aggiornamento GraphQL-Java crea opzioni del parser predefinite che potrebbero causare l'errore "Denial of Service" InvalidSyntax durante l'esecuzione di query complesse GraphQL. Queste convalide sono state introdotte in GraphQL-Java per evitare attacchi Denial of Service.
Per il contesto, tali limitazioni sono definite in https://github.com/graphql-java/graphql-java/blob/v20.3/src/main/java/graphql/parser/ParserOptions.java#L35.
Risoluzione resolution
Per risolvere il problema, segui questi passaggi passando le opzioni del parser personalizzato:
-
Questa opzione è valida per le query GraphQL di grandi dimensioni che restituirebbero un errore "Denial of Service" InvalidSyntax a partire da:
- AEM Cloud Service (limitazione introdotta con il riferimento interno SITES-13906 nella versione 2023.8 e soluzione alternativa introdotta nella versione 2024.3) o;
- AEM 6.5.21 (limitazione e soluzione alternativa introdotte con il riferimento interno SITES-17355)
-
Questo problema può essere risolto configurando la configurazione OSGI Apache Sling Default GraphQL Query Executor e regolando i valori Max Query Tokens e Max Whitespaces Tokens in base alle esigenze.
Questa operazione deve essere eseguita come ultima risorsa e i valori devono essere aumentati gradualmente fino a soddisfare le esigenze del progetto.