默认的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