Standardmäßige Konfigurationsoptionen für GraphQL Query Executor
Erfahren Sie, wie Sie Denial of Service Fehler in GraphQL-Abfragen beheben können, die durch standardmäßige Parser-Optionen in der neuesten GraphQL-Java-Aktualisierung verursacht wurden.
Beschreibung
Umgebung
Adobe Experience Manager
Problem/Symptome
Die neueste GraphQL-Java-Aktualisierung erstellt standardmäßige Parser-Optionen, die beim Ausführen komplexer GraphQL-Abfragen zu InvalidSyntax Fehler „Denial of Service“ führen können. Diese Validierungen wurden in GraphQL-Java eingeführt, um Denial-of-Service-Angriffe zu vermeiden.
Für den Kontext werden diese Einschränkungen in https://github.com/graphql-java/graphql-java/blob/v20.3/src/main/java/graphql/parser/ParserOptions.java#L35. definiert
Auflösung
Sie können das Problem beheben, indem Sie benutzerdefinierte Parser-Optionen übergeben, indem Sie die angegebenen Schritte ausführen:
-
Dies gilt für sehr große GraphQL-Abfragen, die einen „Denial of Service“-InvalidSyntax error zurückgeben würden, entweder beginnend mit:
- AEM Cloud Service (Einschränkung eingeführt mit der internen Referenz SITES-13906 in Version 2023.8 und Problemumgehung eingeführt in Version 2024.3) oder
- AEM 6.5.21 (Einschränkung und Problemumgehung, eingeführt mit der internen Referenz SITES-17355)
-
Um dies zu vermeiden, können Sie die OSGi-Konfiguration Apache Sling Default GraphQL Query Executor konfigurieren und die Werte Max Query Token und Max Whitespaces Token je nach Bedarf anpassen.
Dies sollte als letztes Mittel erfolgen und die Werte sollten schrittweise erhöht werden, bis die Bedürfnisse des Projekts erfüllt sind.