Standardkonfigurationsalternativ för GraphQL Query Executor
Lär dig hur du åtgärdar denial of service fel i GraphQL-frågor som orsakas av standardparseralternativ i den senaste GraphQL Java-uppdateringen.
Beskrivning description
Miljö
Adobe Experience Manager
Problem/symtom
Den senaste GraphQL-Java-uppdateringen skapar standardtolkningsalternativ som kan leda till felet "Denial of Service" InvalidSyntax när komplexa GraphQL-frågor körs. Dessa valideringar infördes i GraphQL-Java för att undvika denial of service-attacker.
Dessa begränsningar definieras för sammanhanget i https://github.com/graphql-java/graphql-java/blob/v20.3/src/main/java/graphql/parser/ParserOptions.java#L35.
Upplösning resolution
Du kan åtgärda problemet genom att skicka anpassade tolkningsalternativ enligt följande steg:
-
Detta gäller för mycket stora GraphQL-frågor som skulle returnera felet "Denial of Service" InvalidSyntax som börjar med:
- AEM Cloud Service (begränsning som infördes med den interna referensen SITES-13906 i version 2023.8 och den lösning som infördes i version 2024.3) eller
- AEM 6.5.21 (begränsning och lösning som infördes med den interna referensen SITES-17355)
-
Detta kan undvikas genom att konfigurera OSGI-konfigurationen Apache Sling som standardhanterare för GraphQL-frågor och justera värdena Max Query Tokens och Max Whitespaces Tokens beroende på behov.
Detta bör göras som en sista utväg och värdena bör ökas gradvis tills projektets behov uppfylls.