Restricción y autorización de métodos HTTP en AEM Dispatcher
Los métodos HTTP como OPTIONS, POST, PUT y DELETE se pueden bloquear o exponer incorrectamente en el nivel de Dispatcher en AEM. Esto puede interrumpir las solicitudes de verificación previa de CORS, exponer el comportamiento de Sling POST en la publicación o producir resultados de seguridad cuando los extremos públicos aceptan métodos no seguros. El problema generalmente proviene de reglas de Dispatcher heredadas que bloquean OPTIONS en sentido amplio o de filtros de denegación que faltan y que permiten que solicitudes POST no seguras lleguen a Publish. Revise los filtros de Dispatcher, permita OPTIONS solo cuando sea necesario y bloquee los métodos no seguros y las operaciones Sling POST explícitamente.
Descripción description
Entorno
- Adobe Experience Manager as a Cloud Service
- AEM Managed Services
- Adobe Experience Manager local
Problema/Síntomas
OPTIONSsolicitudes están bloqueadas en Dispatcher.- Las solicitudes de
POSTa los recursos DAM o.jsondevuelven200 OKy exponen las operaciones de Sling POST. - Las solicitudes
PUToDELETEsolo fallan en la fase o producción de AEMaaCS con405 Method Not Allowed. - Los análisis de seguridad informan de métodos expuestos, como páginas públicas que aceptan
POSTo que muestranOPTIONS.
Causa
Las reglas de seguridad heredadas de Dispatcher suelen bloquear OPTIONS para evitar la alteración de verbos, mientras que los filtros que faltan o son excesivamente permisivos pueden permitir solicitudes no seguras de POST, PUT o DELETE que lleguen a AEM Publish. Esto puede exponer el comportamiento de Sling POST en extremos públicos. En AEM as a Cloud Service Stage and Production, PUT y DELETE también se pueden bloquear intencionadamente para proteger la integridad del repositorio.
Resolución resolution
Para resolver los métodos HTTP bloqueados o expuestos en la capa de Dispatcher, siga estos pasos:
- Identifique los métodos que se permiten o bloquean incorrectamente probando los extremos afectados con
OPTIONS,POST,PUToDELETE. - Revise los filtros de Dispatcher y actualícelos para que se permitan explícitamente los métodos seguros y se denieguen explícitamente los no seguros.
- Utilice reglas de filtro similares a los ejemplos siguientes y ajústelas para que coincidan con las rutas y los métodos exactos necesarios en su entorno.
/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*" }
- Si usa AEM Managed Services o On-Premise, revise
dispatcher.anyy, si es necesario, restrinja los métodos en Apache HTTPD para las rutas que no deban aceptarlos. - Utilice restricciones HTTPD de Apache similares al siguiente ejemplo, donde se requiere el bloqueo de métodos en la capa del servidor web.
<Limit OPTIONS>
Order deny,allow
Deny from all
</Limit>
- Aplique reglas específicas de ruta donde solo se deben permitir los métodos seleccionados.
/0035 { /type "allow" /method "GET" /url "/libs/granite/security/currentuser.json*" }
/0036 { /type "deny" /method "DELETE" /url "/libs/granite/security/currentuser.json*" }
- Permitir
OPTIONSsolo en los puntos de conexión que requieran comprobación previa CORS, como rutas de API GraphQL o SPA, en lugar de habilitarlo en sentido amplio. - Si el comportamiento de Sling POST se expone en la publicación, agregue una regla de denegación para las solicitudes de
POSTbasadas en la operación y colóquela después de reglas de permiso más amplias para que la coincidencia final bloquee la solicitud. - Para la fase y producción de AEMaaCS, si las solicitudes de
PUToDELETEse comportan de forma inesperada después de confirmar la configuración de Dispatcher, póngase en contacto con el Soporte técnico de Adobe. - Vuelva a probar los extremos afectados y confirme que los métodos bloqueados devuelven las respuestas esperadas de
403,404o405, mientras que las solicitudes necesarias deOPTIONSsolo se realizan correctamente en los extremos deseados.