AEM as a Cloud Service:防止错误响应中暴露存储库元数据

本文介绍如何解决Adobe Experience Manager as a Cloud Service中的以下问题:自定义错误处理程序配置在错误响应中公开存储库元数据。 解决方案涉及更新错误处理程序,以确保错误页面呈现为HTML。

描述 description

环境

Adobe Experience Manager as a Cloud Service (AEMaaCS)

症状

自定义错误处理程序处理的错误响应会公开存储库元数据,如jcr:primaryTypejcr:createdByjcr:created,尤其是当错误处理程序包含维护错误页而没有指定.html扩展时。 当对旧版servlet路径(例如: /bin/wcm/search/gql.servlet.json)的请求返回​ 404错误 ​并由自定义错误处理程序JSP (例如/apps/sling/servlet/errorhandler/default.jsp)处理时,会发生这种情况。

原因

如果错误处理程序包含不带.html扩展名的维护错误页面,则响应将继承原始请求的扩展(如.json),从而导致存储库元数据被序列化到响应正文中。 没有凭据或敏感业务数据被公开,但这增加了信息泄露的风险。

解决方法 resolution

请按照以下步骤解决问题:

  1. 打开项目代码库并找到自定义错误处理程序JSP文件(通常位于/apps/sling/servlet/errorhandler/default.jsp)。

  2. 确定包含维护错误页面的行。 这些内容可能如下所示:

    <jsp:include page="/content/<your-site>/maintenance/maintenance-error" />

  3. 更新每个include语句以显式指定.html扩展。 例如:

    <jsp:include page="/content/<your-site>/maintenance/maintenance-error.html" />

  4. 保存更改,然后使用标准部署过程将更新的代码部署到AEM as a Cloud Service环境。

  5. 通过访问受影响的端点(如/bin/wcm/search/gql.servlet.json)来验证修复,并确认错误响应不再公开存储库元数据并呈现为HTML错误页面。

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