AEM as a Cloud Service:防止错误响应中暴露存储库元数据
本文介绍如何解决Adobe Experience Manager as a Cloud Service中的以下问题:自定义错误处理程序配置在错误响应中公开存储库元数据。 解决方案涉及更新错误处理程序,以确保错误页面呈现为HTML。
描述 description
环境
Adobe Experience Manager as a Cloud Service (AEMaaCS)
症状
自定义错误处理程序处理的错误响应会公开存储库元数据,如jcr:primaryType、jcr:createdBy和jcr:created,尤其是当错误处理程序包含维护错误页而没有指定.html扩展时。 当对旧版servlet路径(例如: /bin/wcm/search/gql.servlet.json)的请求返回 404错误 并由自定义错误处理程序JSP (例如/apps/sling/servlet/errorhandler/default.jsp)处理时,会发生这种情况。
原因
如果错误处理程序包含不带.html扩展名的维护错误页面,则响应将继承原始请求的扩展(如.json),从而导致存储库元数据被序列化到响应正文中。 没有凭据或敏感业务数据被公开,但这增加了信息泄露的风险。
解决方法 resolution
请按照以下步骤解决问题:
-
打开项目代码库并找到自定义错误处理程序JSP文件(通常位于
/apps/sling/servlet/errorhandler/default.jsp)。 -
确定包含维护错误页面的行。 这些内容可能如下所示:
<jsp:include page="/content/<your-site>/maintenance/maintenance-error" /> -
更新每个include语句以显式指定
.html扩展。 例如:<jsp:include page="/content/<your-site>/maintenance/maintenance-error.html" /> -
保存更改,然后使用标准部署过程将更新的代码部署到AEM as a Cloud Service环境。
-
通过访问受影响的端点(如
/bin/wcm/search/gql.servlet.json)来验证修复,并确认错误响应不再公开存储库元数据并呈现为HTML错误页面。