デフォルトのGraphQL Query Executor 設定オプション
最新のGraphQL Java アップデートで、デフォルトのパーサーオプションが原因で発生したGraphQL クエリの サービス拒否 エラーに対処する方法を説明します。
説明 description
環境
Adobe Experience Manager
問題/症状
最新のGraphQLと Java のアップデートでは、GraphQLの複雑なクエリを実行する際に Denial of Service」 InvalidSyntax error を引き起こす可能性があるデフォルトのパーサーオプションが作成されます。 これらの検証は、サービス拒否攻撃を避けるためにGraphQL - Java で導入されました。
コンテキストに応じて、これらの制限は https://github.com/graphql-java/graphql-java/blob/v20.3/src/main/java/graphql/parser/ParserOptions.java#L35. で定義されています
解決策 resolution
この問題は、次の手順に従ってカスタムパーサーオプションを渡すことで修正できます。
-
これは、次のいずれかで始まる "Denial of Service" InvalidSyntax error を返す非常に大きなGraphQL クエリに対して有効です。
- AEM Cloud Service(リリース 2023.8 の内部参照 SITES-13906 で導入された制限と、リリース 2024.3 で導入された回避策)または
- AEM 6.5.21 (内部参照 SITES-17355 で導入された制限と回避策)
-
これを克服するには、OSGI 設定 Apache Sling Default GraphQL Query Executor を設定し、必要に応じて Max Query Tokens と Max Whitespace Tokens の値を変更します。
これは最後の手段として行い、プロジェクトのニーズが満たされるまで値を徐々に増やす必要があります。
recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f