預設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