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.

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f