Beschränken und Zulassen von HTTP-Methoden in AEM Dispatcher
HTTP-Methoden wie OPTIONS, POST, PUT und DELETE können auf der Dispatcher-Ebene in AEM blockiert oder falsch bereitgestellt werden. Dies kann CORS-Preflight-Anfragen unterbrechen, das Sling-POST-Verhalten bei der Veröffentlichung verfügbar machen oder Sicherheitsergebnisse erzeugen, wenn öffentliche Endpunkte unsichere Methoden akzeptieren. Das Problem stammt in der Regel von alten Dispatcher-Regeln, die OPTIONS weitgehend blockieren oder fehlende Ablehnungsfilter enthalten, die es unsicheren POST ermöglichen, die Veröffentlichung zu erreichen. Überprüfen Sie Dispatcher-Filter, lassen Sie OPTIONS nur zu, wenn erforderlich, und blockieren Sie unsichere Methoden und Sling-POST-Vorgänge explizit.
Beschreibung description
Umgebung
- Adobe Experience Manager as a Cloud Service
- AEM Managed Services
- Adobe Experience Manager On-Premise
Problem/Symptome
OPTIONSAnfragen werden in Dispatcher blockiert.POSTAnforderungen an DAM- oder.json-Ressourcen geben200 OKzurück und machen Sling-POST-Vorgänge verfügbar.PUToderDELETEAnfragen schlagen nur in der AEMaaCS-Staging- oder -Produktionsumgebung mit405 Method Not Allowedfehl.- Sicherheitsüberprüfungen melden offen gelegte Methoden, z. B. öffentliche Seiten, die
POSTakzeptieren oderOPTIONSanzeigen.
Ursache
Ältere Dispatcher-Sicherheitsregeln blockieren häufig OPTIONS, um Verb-Manipulationen zu verhindern, während fehlende oder übermäßig tolerante Filter unsichere POST-, PUT- oder DELETE-Anfragen an AEM Publish ermöglichen können. Dadurch kann das Sling-POST-Verhalten auf öffentlichen Endpunkten verfügbar gemacht werden. In der Staging- und Produktionsumgebung von AEM as a Cloud Service können PUT und DELETE auch absichtlich blockiert werden, um die Repository-Integrität zu schützen.
Lösung resolution
Gehen Sie wie folgt vor, um blockierte oder offen gelegte HTTP-Methoden auf Dispatcher-Ebene aufzulösen:
- Identifizieren Sie, welche Methoden fälschlicherweise zugelassen oder blockiert werden, indem Sie die betroffenen Endpunkte mit
OPTIONS,POST,PUToderDELETEtesten. - Überprüfen Sie die Dispatcher-Filter und aktualisieren Sie sie, sodass sichere Methoden explizit zulässig sind und unsichere Methoden explizit verweigert werden.
- Verwenden Sie Filterregeln ähnlich den folgenden Beispielen und passen Sie sie an die exakten Pfade und Methoden an, die in Ihrer Umgebung erforderlich sind.
/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*" }
- Wenn Sie AEM Managed Services oder On-Premise verwenden, überprüfen Sie
dispatcher.anyund schränken Sie bei Bedarf die Methoden unter Apache HTTPD auf Pfade ein, die diese nicht akzeptieren sollten. - Verwenden Sie Apache-HTTPD-Einschränkungen ähnlich dem folgenden Beispiel, bei dem die Methodenblockierung auf der Webserver-Ebene erforderlich ist.
<Limit OPTIONS>
Order deny,allow
Deny from all
</Limit>
- Wenden Sie pfadspezifische Regeln an, bei denen nur ausgewählte Methoden zulässig sein sollen.
/0035 { /type "allow" /method "GET" /url "/libs/granite/security/currentuser.json*" }
/0036 { /type "deny" /method "DELETE" /url "/libs/granite/security/currentuser.json*" }
OPTIONSnur für Endpunkte zulassen, für die CORS-Preflight erforderlich ist, z. B. GraphQL- oder SPA-API-Routen, anstatt sie umfassend zu aktivieren.- Wenn das Sling-POST-Verhalten bei der Veröffentlichung verfügbar gemacht wird, fügen Sie eine Ablehnungsregel für vorgangsbasierte
POST-Anfragen hinzu und platzieren Sie sie hinter umfassendere Zulassen-Regeln, damit die endgültige Übereinstimmung die Anfrage blockiert. - Wenden Sie sich für die AEMaaCS-Staging- und -Produktionsumgebung an den Adobe-Support, wenn sich
PUT- oderDELETE-Anfragen nach der Bestätigung der Dispatcher-Konfiguration unerwartet . - Testen Sie die betroffenen Endpunkte erneut und bestätigen Sie, dass blockierte Methoden die erwarteten
403-,404- oder405-Antworten zurückgeben, während erforderlicheOPTIONS-Anfragen nur bei den beabsichtigten Endpunkten erfolgreich sind.