デフォルトの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 TokensMax Whitespace Tokens の値を変更します。

これは最後の手段として行い、プロジェクトのニーズが満たされるまで値を徐々に増やす必要があります

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