Options de configuration de l’exécution de requête GraphQL par défaut
Découvrez comment résoudre les erreurs de déni de service dans les requêtes GraphQL provoquées par les options d’analyseur par défaut dans la dernière mise à jour Java de GraphQL.
Description description
Environnement
Adobe Experience Manager
Problème/Symptômes
La dernière mise à jour GraphQL-Java crée des options d’analyseur par défaut qui peuvent entraîner l’erreur "Denial of Service" InvalidSyntax lors de l’exécution de requêtes complexes GraphQL. Ces validations ont été introduites dans GraphQL-Java pour éviter les attaques par déni de service.
Pour le contexte, ces limites sont définies dans https://github.com/graphql-java/graphql-java/blob/v20.3/src/main/java/graphql/parser/ParserOptions.java#L35.
Résolution resolution
Vous pouvez résoudre le problème en transmettant des options d’analyseur personnalisées en procédant comme suit :
-
Ceci est valide pour les requêtes GraphQL très volumineuses qui retourneraient une erreur "Denial of Service" InvalidSyntax en commençant par :
- AEM Cloud Service (limitation introduite avec la référence interne SITES-13906 dans la version 2023.8 et solution de contournement introduite dans la version 2024.3) ou
- AEM 6.5.21 (limitation et contournement introduits avec la référence interne SITES-17355)
-
Pour ce faire, configurez la configuration OSGI Apache Sling Default GraphQL Query Executor et ajustez les valeurs Max Query Tokens et Max Whitespaces Tokens en fonction des besoins.
Cela doit être effectué en dernier recours et les valeurs doivent être augmentées progressivement jusqu’à ce que les besoins du projet soient satisfaits.