AEM Dispatcher에서 HTTP 메서드 제한 및 허용

AEM의 Dispatcher 계층에서 OPTIONS, POST, PUTDELETE과(와) 같은 HTTP 메서드가 차단되거나 잘못 노출될 수 있습니다. 이렇게 하면 CORS Preflight 요청이 중단되거나, Publish에서 Sling POST 동작이 노출되거나, 공개 끝점이 안전하지 않은 메서드를 수락할 때 보안 검색 결과가 생성될 수 있습니다. 이 문제는 일반적으로 OPTIONS을(를) 광범위하게 차단하는 레거시 Dispatcher 규칙이나 안전하지 않은 POST 요청이 Publish에 도달할 수 있도록 허용하는 거부 필터가 없는 경우에 발생합니다. Dispatcher 필터를 검토하고 필요한 경우에만 OPTIONS을(를) 허용하고 안전하지 않은 메서드 및 Sling POST 작업을 명시적으로 차단하십시오.

설명 description

환경

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

문제/증상

  • OPTIONS개의 요청이 Dispatcher에서 차단되었습니다.
  • DAM 또는 .json 리소스에 대한 POST개의 요청이 200 OK을(를) 반환하고 Sling POST 작업을 노출합니다.
  • 405 Method Not Allowed을(를) 사용하는 AEMaaCS 단계 또는 프로덕션에서만 PUT 또는 DELETE 요청이 실패합니다.
  • 보안 검색은 공용 페이지가 POST을(를) 수락하거나 OPTIONS을(를) 표시하는 것과 같이 노출된 방법을 보고합니다.

원인

레거시 Dispatcher 보안 규칙은 종종 동사 조작을 방지하기 위해 OPTIONS을(를) 차단하지만, 누락되었거나 너무 허용 가능한 필터는 안전하지 않은 POST, PUT 또는 DELETE 요청이 AEM Publish에 도달할 수 있도록 합니다. 이로 인해 공개 엔드포인트에 Sling POST 동작이 노출될 수 있습니다. AEM as a Cloud Service 단계 및 프로덕션에서 저장소 무결성을 보호하기 위해 PUTDELETE을(를) 의도적으로 차단할 수도 있습니다.

해결 방법 resolution

Dispatcher 레이어에서 차단되거나 노출된 HTTP 메서드를 해결하려면 다음 단계를 수행합니다.

  1. 영향을 받는 끝점을 OPTIONS, POST, PUT 또는 DELETE(으)로 테스트하여 잘못 허용되거나 차단되는 메서드를 식별합니다.
  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 또는 온-프레미스를 사용하는 경우 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. GraphQL 또는 SPA API 경로와 같이 CORS Preflight가 필요한 끝점에서만 OPTIONS을(를) 사용할 수 있습니다.
  2. Sling POST 동작이 게시에서 노출되는 경우 작업 기반 POST 요청에 대한 거부 규칙을 추가하고 최종 일치가 요청을 차단하도록 더 광범위한 허용 규칙 뒤에 배치하십시오.
  3. AEMaaCS 단계 및 프로덕션의 경우 Dispatcher 구성을 확인한 후 PUT 또는 DELETE 요청이 예기치 않게 작동하는 경우 Adobe 지원에 문의하십시오.
  4. 영향을 받는 끝점을 다시 테스트하고 차단된 메서드가 예상 403, 404 또는 405 응답을 반환하지만 필요한 OPTIONS 요청은 의도한 끝점에서만 성공하는지 확인하십시오.

관련 읽기

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