AEM DispatcherでのHTTP メソッドの制限と許可
OPTIONS、POST、PUT、DELETEなどのHTTP メソッドは、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 オンプレミス
問題/症状
- Dispatcherで
OPTIONS件のリクエストがブロックされています。 - DAMまたは
.jsonリソースにPOST件のリクエストを行うと、200 OKが返され、Sling POST操作が公開されます。 PUTまたはDELETEのリクエストは、405 Method Not Allowedを含むAEMaaCS ステージまたは実稼動環境でのみ失敗します。- セキュリティスキャンで、
POSTを受け入れる公開ページやOPTIONSを表示する公開ページなど、公開されているメソッドを報告します。
原因
従来のDispatcher セキュリティルールでは、動詞の改ざんを防ぐためにOPTIONSがブロックされることが多く、見つからないか過度に許可されているフィルターを使用すると、安全でないPOST、PUT、またはDELETEのリクエストがAEM パブリッシュに到達する可能性があります。 これにより、パブリックエンドポイントでSling POST動作を公開できます。 AEM as a Cloud Service ステージングおよび実稼動環境では、リポジトリの整合性を保護するために、PUTおよびDELETEを意図的にブロックすることもできます。
解決策 resolution
Dispatcher レイヤーでブロックまたは公開されたHTTP メソッドを解決するには、次の手順に従います。
- 影響を受けるエンドポイントを
OPTIONS、POST、PUTまたはDELETEでテストすることで、どのメソッドが誤って許可またはブロックされているかを特定します。 - Dispatcher フィルターを確認して更新し、安全なメソッドが明示的に許可され、安全でないメソッドが明示的に拒否されるようにします。
- 次の例と同様にフィルタールールを使用し、環境で必要なパスとメソッドと正確に一致するように調整します。
/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*" }
- AEM Managed Servicesまたはオンプレミスを使用する場合は、
dispatcher.anyを確認し、必要に応じて、Apache HTTPDでメソッドを制限して、メソッドを受け入れないパスを指定します。 - Web サーバー層でメソッドのブロックが必要な場合は、次の例と同様にApache HTTPD制限を使用します。
<Limit OPTIONS>
Order deny,allow
Deny from all
</Limit>
- 選択したメソッドのみを許可するパス固有のルールを適用します。
/0035 { /type "allow" /method "GET" /url "/libs/granite/security/currentuser.json*" }
/0036 { /type "deny" /method "DELETE" /url "/libs/granite/security/currentuser.json*" }
- GraphQLやSPA API ルートなどのCORS プリフライトを必要とするエンドポイントでのみ
OPTIONSを許可します。広く有効にする必要はありません。 - Sling POST ビヘイビアーがパブリッシュで公開されている場合は、操作ベースの
POST要求に対して拒否ルールを追加し、より広範な許可ルールの後に配置して、最終一致が要求をブロックするようにします。 - AEMaaCS ステージと実稼動環境で、Dispatcherの設定を確定した後に
PUTまたはDELETEのリクエストが予期せず動作する場合は、Adobe サポート にお問い合わせください。 - 影響を受けるエンドポイントを再試行し、ブロックされたメソッドが想定される
403、404、または405の応答を返し、必須のOPTIONS要求は意図されたエンドポイントでのみ成功することを確認します。
関連トピックス
recommendation-more-help
experience-cloud-kcs-help-kbarticles