默认的GraphQL查询执行器配置选项

了解如何解决最新GraphQL Java更新中由默认解析器选项导致的GraphQL查询中的​ 拒绝服务 ​错误。

描述 description

环境

Adobe Experience Manager

问题/症状

最新的GraphQL-Java更新创建了默认解析器选项,在执行GraphQL复杂查询时,该选项可能导致​ “拒绝服务”InvalidSyntax ​错误。  这些验证在GraphQL-Java中引入,以避免拒绝服务攻击。

对于上下文,这些限制在https://github.com/graphql-java/graphql-java/blob/v20.3/src/main/java/graphql/parser/ParserOptions.java#L35.中定义

解决方法 resolution

您可以按照给定步骤传递自定义解析器选项来解决问题:

  • 这适用于非常大的GraphQL查询,这些查询会返回​ “拒绝服务”InvalidSyntax ​错误,开头为:

    • AEM Cloud Service(2023.8版中的内部引用SITES-13906引入的限制以及2024.3版中引入的解决方法)或;
    • AEM 6.5.21(内部参考SITES引入的限制和解决方法 — 17355)
  • 可以通过配置OSGI配置 Apache Sling默认GraphQL查询执行器 并根据需要调整值 最大查询令牌最大空格令牌 来克服此问题。

这应该作为最后手段来完成,并且应该逐渐增加值,直到满足项目的需要

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