透過GraphQL公開的客戶群組名稱、區段和促銷規則資訊
本文提供Hotfix來防止客戶群組名稱、客戶區段和促銷規則資訊透過GraphQL曝光。 此問題已排程在Adobe Commerce 2.4.8-p1中修正。
說明 description
受影響的產品和版本
已為Adobe Commerce版本建立修補程式:
- Adobe Commerce (所有部署方法) 2.4.8
與Adobe Commerce版本相容:
- Adobe Commerce (所有部署方法) 2.4.8
問題
針對Storefront Personalization下拉式清單,我們引進了新的GraphQL變動,以顯示客戶群組名稱、區段、購物車和目錄規則等基本資訊。 但是,如果名稱中包含選件詳細資料或優惠券代碼,這可能會公開敏感資料。
要再現的步驟
案例I:目錄規則
-
在 管理員 側邊欄上,移至行銷
>目錄價格規則>新增規則。 -
定義規則條件(例如產品屬性或類別)。
-
儲存並套用規則。
-
確保產品符合規則條件。
-
執行下列GraphQL查詢以擷取所有規則:
code language-none query { allCatalogRules { name } } -
查詢產品以驗證規則是否適用:
code language-none query { products(filter: { sku: { eq: "product-sku" } }) { items { name rules { name } } } }
案例II: 購物車規則
-
在 管理員 側邊欄上,移至行銷
>購物車價格規則>新增規則。 -
設定條件,例如最小購物車值和客戶群組。
-
儲存並套用規則。
-
將產品新增到購物車以觸發規則。
-
使用GraphQL驗證所有購物車規則:
code language-none query { allCartRules { name } } -
檢查規則是否已套用至作用中的購物車:
code language-none query { cart(cart_id: "your-cart-id") { rules { name } } }
案例III: 客戶群組
-
在 管理員 側邊欄上,移至客戶
>客戶群組。 -
驗證預期的群組是否存在。
-
使用 GraphQL 擷取所有群組:
code language-none query { allCustomerGroups { name } } -
驗證客戶/來賓的群組:
code language-none query { customerGroup { name } }
案例IV: 客戶區段 (僅適用於Adobe Commerce)
-
在 管理員 側邊欄上,移至客戶
>客戶區段>新增區段。 -
定義以客戶為基礎的條件(例如,訂單、購物車內容)。
-
指派適用的範圍: 訪客、已註冊,或兩者皆指定。
-
確保條件符合測試客戶。
-
使用GraphQL檢查所有區段:
code language-none query { allCustomerSegments { name apply_to } } -
驗證套用至購物車的區段:
code language-none query { customerSegments(cartId: "your-cart-id") { name } }
預期結果:
客戶群組、區段和促銷規則資訊的名稱不會透過GraphQL公開。
實際結果:
客戶群組、區段和促銷規則資訊的名稱會透過GraphQL公開。
解決方法 resolution
根據您的Adobe Commerce版本套用附加的修補程式:
-
若為Adobe Commerce 2.4.8版:
-
若為Magento Open Source 2.4.8版: