在AEM Dispatcher中限制和允許HTTP方法

HTTP方法(例如OPTIONSPOSTPUTDELETE)可能會在AEM中的Dispatcher層級遭到封鎖或錯誤公開。 這可能會中斷CORS預檢請求、在發佈上公開Sling POST行為,或在公用端點接受不安全方法時產生安全性發現。 問題通常來自廣泛封鎖OPTIONS的舊版Dispatcher規則,或是遺失允許不安全的POST請求到達發佈頁面的拒絕篩選器。 檢閱Dispatcher篩選器,僅在必要時允許OPTIONS,並明確封鎖不安全的方法和Sling POST作業。

說明 description

環境

  • Adobe Experience Manager as a Cloud Service
  • AEM Managed Services
  • Adobe Experience Manager On-Premise

問題/症狀

  • 已在Dispatcher封鎖OPTIONS個要求。
  • 對DAM或.json資源的POST請求傳回200 OK並公開Sling POST操作。
  • PUTDELETE要求只會在具有405 Method Not Allowed的AEMaaCS中繼或生產環境中失敗。
  • 安全性掃描報告公開的方法,例如接受POST或顯示OPTIONS的公開頁面。

原因

舊版Dispatcher安全性規則通常會封鎖OPTIONS以防止動詞竄改,而缺少或過度寬鬆的篩選器可能會允許不安全的POSTPUTDELETE請求存取AEM Publish。 這會公開公開公開公開端點上的Sling POST行為。 在AEM as a Cloud Service Stage and Production中,也可以刻意封鎖PUTDELETE以保護存放庫完整性。

解決方法 resolution

若要在Dispatcher圖層解析封鎖或公開的HTTP方法,請執行下列步驟:

  1. 透過OPTIONSPOSTPUTDELETE測試受影響的端點,找出不正確允許或封鎖的方法。
  2. 請檢閱Dispatcher篩選器並加以更新,以明確允許安全的方法,並明確拒絕不安全的方法。
  3. 使用類似下列範例的篩選規則,並加以調整以符合您的環境中所需的確切路徑和方法。
/deny-post { /type "deny" /method "POST" /extension '(css|png|pdf|jpg|js)' }
/deny-operation { /type "deny" /method "POST" /url ".*:operation.*" }
/allow-options-cors { /type "allow" /method "OPTIONS" /url "/graphql*" }
  1. 如果您使用AEM Managed Services或On-Premise,請檢閱dispatcher.any,並視需要在Apache HTTPD限制不應該接受的方法的路徑。
  2. 使用與以下範例類似的Apache HTTPD限制,其中需要在網頁伺服器層封鎖方法。
<Limit OPTIONS>
Order deny,allow
Deny from all
</Limit>
  1. 套用路徑特定規則,只允許選取的方法。
/0035 { /type "allow" /method "GET" /url "/libs/granite/security/currentuser.json*" }
/0036 { /type "deny" /method "DELETE" /url "/libs/granite/security/currentuser.json*" }
  1. 僅允許在需要CORS預檢的端點上使用OPTIONS,例如GraphQL或SPA API路由,而不是廣泛啟用。
  2. 如果Sling POST行為在發佈上公開,請為作業型POST請求新增拒絕規則,並將其置於更廣的允許規則之後,以便最終比對會封鎖請求。
  3. 對於AEMaaCS中繼和生產環境,如果在您確認Dispatcher設定後PUTDELETE請求出現意外行為,請聯絡Adobe支援
  4. 重新測試受影響的端點,並確認封鎖的方法會傳回預期的403404405回應,而所需的OPTIONS要求只會在預期的端點上成功。

相關閱讀

recommendation-more-help
experience-cloud-kcs-help-kbarticles