預設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查詢,這類查詢會傳回​ "Denial of Service" 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