了解各种安全强化设置,以增强在企业内部网中运行的JEE上的AEM Forms的安全性。
本文介绍了为保护在JEE上运行AEM Forms的服务器而提供的建议和最佳实践。 这不是适用于您的操作系统和应用程序服务器的全面的主机强化文档。 相反,本文介绍了您应该实施的各种安全强化设置,以增强在公司内部网内运行的JEE上AEM Forms的安全性。 但是,为了确保JEE应用程序服务器上的AEM Forms保持安全,您还应实施安全监控、检测和响应过程。
本文介绍了在安装和配置生命周期的以下阶段应用的硬化技术:
AEM Forms on JEE是高度可自定义的,并且可以在许多不同的环境中工作。 某些建议可能不符合您组织的需求。
在JEE上安装AEM Forms之前,您可以将安全解决方案应用到网络层和操作系统。 本节介绍了一些问题,并就减少这些领域的安全漏洞提出建议。
在UNIX和Linux上安装和配置
您不应在JEE上使用根Shell安装或配置AEM Forms。 默认情况下,文件安装在/opt目录下,执行安装的用户需要在/opt目录下拥有所有文件权限。 或者,也可以在单个用户的/user目录下执行安装,在该目录下,他们已经拥有所有文件权限。
在Windows上安装和配置
如果您在JBoss的JEE上使用统包方法安装AEM Forms,或者您正在安装PDF生成器,则您应以管理员身份在Windows上执行安装。 此外,在具有本机应用程序支持的Windows上安装PDF生成器时,您必须与安装Microsoft Office的Windows用户一样运行安装。 有关安装权限的更多信息,请参阅在JEE上安装和部署AEM Forms文档,以了解您的应用程序服务器。
网络安全漏洞是任何面向Internet或面向Intranet的应用程序服务器的首要威胁之一。 本节介绍如何针对这些漏洞强化网络上的主机。 它解决了网络分段、传输控制协议/互联网协议(TCP/IP)堆栈强化以及防火墙用于主机保护的问题。
下表描述了减少网络安全漏洞的常见过程。
问题 |
描述 |
---|---|
隔离区(DMZ) |
在隔离区(DMZ)内部署表单服务器。 分段应至少存在于两个级别中,应用程序服务器用于在JEE上运行AEM Forms,位于内部防火墙之后。 将外部网络与包含Web服务器的DMZ分隔开,Web服务器又必须与内部网络分隔开。 使用防火墙来实现分层。 对通过每个网络层的流量进行分类和控制,以确保仅允许绝对最小的所需数据。 |
专用IP地址 |
在AEM Forms应用程序服务器上将网络地址转换(NAT)与RFC 1918专用IP地址结合使用。 分配专用IP地址(10.0.0.0/8、172.16.0.0/12和192.168.0.0/16),使攻击者更难通过Internet路由NAT内部主机与NAT内部主机之间的通信。 |
防火墙 |
使用以下标准选择防火墙解决方案:
|
数据库端口 |
请勿对数据库使用默认监听端口(MySQL - 3306、Oracle- 1521、MS SQL - 1433)。 有关更改数据库端口的信息,请参阅数据库文档。 使用其他数据库端口会影响JEE上的整个AEM Forms配置。 如果更改默认端口,则必须在其他配置区域(例如JEE上的AEM Forms的数据源)中进行相应的修改。 有关在JEE上的AEM Forms中配置数据源的信息,请参阅在JEE上安装和升级AEM Forms或在JEE上为应用程序服务器升级到AEM Forms(位于 AEM Forms用户指南. |
下表描述了在操作系统中发现的一些尽可能减少安全漏洞的潜在方法。
问题 |
描述 |
---|---|
安全修补程序 |
如果供应商安全补丁和升级未及时应用,则未经授权的用户可能获得对应用程序服务器的访问权,这种风险增加。 在将安全修补程序应用到生产服务器之前,请先测试这些修补程序。 此外,还应创建策略和程序,以定期检查和安装修补程序。 |
病毒防护软件 |
病毒扫描程序可以通过扫描签名或监视异常行为来识别受感染的文件。 扫描程序将其病毒签名保留在文件中,该文件通常存储在本地硬盘上。 由于经常发现新病毒,因此您应该经常更新此文件,以便病毒扫描程序识别所有当前病毒。 |
网络时间协议(NTP) |
要进行法证分析,请在表单服务器上保留准确的时间。 使用NTP来同步所有直接连接到Internet的系统上的时间。 |
有关操作系统的其他安全信息,请参阅 "操作系统安全信息".
本节介绍在AEM Forms安装过程中可用于减少安全漏洞的技术。 在某些情况下,这些技术会使用安装过程中包含的选项。 下表介绍了这些技术。
问题 |
描述 |
---|---|
特权 |
使用安装软件所需的最少权限数。 使用“管理员”组中未包含的帐户登录到您的计算机。 在Windows上,您可以使用“运行方式”命令在JEE安装程序上以管理用户身份运行AEM Forms。 在UNIX和Linux系统上,使用命令,例如 |
软件源 |
请勿在JEE上从不受信任的源下载或运行AEM Forms。 恶意程序可能包含以多种方式违反安全的代码,包括数据窃取、修改和删除以及拒绝服务。 在JEE上从AdobeDVD或仅从可信来源安装AEM Forms。 |
磁盘分区 |
将AEM Forms置于JEE上的专用磁盘分区上。 磁盘分段是一个过程,它会将服务器上的特定数据保留在单独的物理磁盘上,以增强安全性。 以这种方式安排数据可降低目录遍历攻击的风险。 计划创建一个与系统分区分开的分区,您可以在JEE内容目录上安装AEM Forms。 (在Windows上,系统分区包含system32目录或引导分区。) |
组件 |
评估现有服务,并禁用或卸载任何不需要的服务。 请勿安装不必要的组件和服务。 应用程序服务器的默认安装可能包含您不需要的服务。 您应在部署之前禁用所有不必要的服务,以最大限度地减少攻击的入口点。 例如,在JBoss上,您可以在META-INF/jboss-service.xml描述符文件中注释掉不必要的服务。 |
跨域策略文件 |
存在 |
操作系统安全设置 |
如果需要在Solaris平台上使用192位或256位XML加密,请确保安装 |
在JEE上成功安装AEM Forms后,务必从安全角度定期维护环境。
以下部分详细介绍为保护已部署的表单服务器而建议执行的不同任务。
以下推荐设置适用于管理Web应用程序以外的JEE服务器上的AEM Forms。 要降低服务器的安全风险,请在JEE上安装AEM Forms后立即应用这些设置。
安全修补程序
如果供应商安全补丁和升级未及时应用,则未经授权的用户可能会获得对应用程序服务器的访问权限,这种风险会增加。 在将安全修补程序应用到生产服务器之前,先测试这些修补程序,以确保应用程序的兼容性和可用性。 此外,还应创建策略和程序,以定期检查和安装修补程序。 AEM Forms on JEE更新位于企业产品下载网站上。
服务帐户(仅Windows上的JBoss统包)
AEM Forms on JEE默认使用LocalSystem帐户安装服务。 内置的LocalSystem用户帐户具有高级别的可访问性;它属于管理员组。 如果工作进程标识作为LocalSystem用户帐户运行,则该工作进程拥有对整个系统的完全访问权限。
要使用特定的非管理帐户运行部署了JEE上的AEM Forms的应用程序服务器,请按照以下说明操作:
在Microsoft管理控制台(MMC)中,为表单服务器服务创建一个本地用户,以登录方式:
无法更改PDF生成器的此设置。
选择 开始 > 设置 > 管理工具 > 服务.
双击JEE上的JBoss for AEM Forms并停止服务。
在 登录 选项卡,选择 此帐户,浏览您创建的用户帐户,然后输入该帐户的密码。
在MMC中,打开 本地安全设置 选择 本地策略 > 用户权限分配.
将以下权限分配给表单服务器在下运行的用户帐户:
为新用户帐户授予在JEE Web内容目录上读取和执行AEM Forms、列出文件夹内容和读取权限项。
启动应用程序服务器。
禁用Configuration Manager引导Servlet
配置管理器使用部署在应用程序服务器上的servlet在JEE数据库上执行AEM Forms的引导。 由于配置管理器在配置完成之前访问此servlet,因此对授权用户的访问尚未获得安全,并且在您成功使用配置管理器在JEE上配置AEM Forms后,应该禁用此Servlet。
解压缩adobe-livecycle-[appserver].ear文件。
打开META-INF/application.xml文件。
搜索adobe-bootstrapper.war部分:
<!-- bootstrapper start -->
<module id="WebApp_adobe_bootstrapper">
<web>
<web-uri>adobe-bootstrapper.war</web-uri>
<context-root>/adobe-bootstrapper</context-root>
</web>
</module>
<module id="WebApp_adobe_lcm_bootstrapper_redirector">
<web>
<web-uri>adobe-lcm-bootstrapper-redirector.war</web-uri>
<context-root>/adobe-lcm-bootstrapper</context-root>
</web>
</module>
<!-- bootstrapper end-->
停止AEM Forms服务器。
注释掉adobe-bootstrapper.war和adobe-lcm-bootstrapper-redirectory。 战争模块如下:
<!-- bootstrapper start -->
<!--
<module id="WebApp_adobe_bootstrapper">
<web>
<web-uri>adobe-bootstrapper.war</web-uri>
<context-root>/adobe-bootstrapper</context-root>
</web>
</module>
<module id="WebApp_adobe_lcm_bootstrapper_redirector">
<web>
<web-uri>adobe-lcm-bootstrapper-redirector.war</web-uri>
<context-root>/adobe-lcm-bootstrapper</context-root>
</web>
</module>
-->
<!-- bootstrapper end-->
保存并关闭META-INF/application.xml文件。
压缩EAR文件,并将其重新部署到应用程序服务器。
启动AEM Forms服务器。
在浏览器中键入以下URL以测试更改并确保其不再有效。
https://<localhost>:<port>/adobe-bootstrapper/bootstrap
锁定对信任存储的远程访问
配置管理器允许您将Acrobat Reader DC扩展凭据上传到JEE信任存储上的AEM Forms。 这意味着,默认情况下已启用通过远程协议(SOAP和EJB)访问信任存储凭据服务的功能。 在您使用配置管理器上传权限凭据后或者如果您决定稍后使用管理控制台来管理凭据,则不再需要此访问。
您可以按照部分中的步骤,禁用对所有信任存储服务的远程访问 禁用对服务的非必要远程访问.
禁用所有非必需的匿名访问
某些表单服务器服务具有可由匿名调用者调用的操作。 如果不需要匿名访问这些服务,请按照 禁用对服务的非必要匿名访问.
安装JEE上的AEM Forms时,会为用户Super Administrator/login-id Administrator配置一个默认用户帐户,其默认密码为 密码. 您应使用配置管理器立即更改此密码。
在Web浏览器中键入以下URL:
https://[host name]:[port]/adminui
默认端口号为以下端口之一:
JBoss: 8080
WebLogic服务器: 7001
WebSphere: 9080。
在 用户名 字段,类型 administrator
和 密码 字段,类型 password
.
单击 设置 > 用户管理 > 用户和组.
类型 administrator
在 查找 ,然后单击 查找.
单击 超级管理员 中。
单击 更改密码 (在“编辑用户”页面上)。
指定新密码并单击 保存.
此外,还建议通过执行以下步骤来更改CRX管理员的默认密码:
https://[server]:[port]/lc/libs/granite/security/content/useradmin.html
使用默认的用户名/密码。Web服务定义语言(WSDL)生成应仅为开发环境启用,开发人员在开发环境中使用WSDL生成来构建其客户端应用程序。 可以选择在生产环境中禁用WSDL生成,以避免公开服务的内部详细信息。
在Web浏览器中键入以下URL:
https://[host name]:[port]/adminui
单击 设置>核心系统设置>配置.
取消选择 启用WSDL 单击 确定.
下表介绍了在安装JEE应用程序上的AEM Forms后保护应用程序服务器的一些技术。
问题 |
描述 |
---|---|
应用程序服务器管理控制台 |
在应用程序服务器的JEE上安装、配置和部署AEM Forms后,您应该禁用对应用程序服务器管理控制台的访问。 有关详细信息,请参阅应用程序服务器文档。 |
应用程序服务器Cookie设置 |
应用程序Cookie由应用程序服务器控制。 部署应用程序时,应用程序服务器管理员可以在服务器范围或特定于应用程序的基础上指定Cookie首选项。 默认情况下,服务器设置会首选。 您的应用程序服务器生成的所有会话Cookie都应包含 您可以限制使用仅限HTTPS发送Cookie。 因此,不会通过HTTP发送这些文件并对其进行未加密。 应用程序服务器管理员应全局启用服务器的安全Cookie。 例如,使用JBoss Application Server时,可以将连接器元素修改为 有关Cookie设置的更多详细信息,请参阅应用程序服务器文档。 |
目录浏览 |
当有人请求不存在的页面或请求控制器名称(请求字符串以正斜杠(/)结尾)时,应用程序服务器不应返回该目录的内容。 要防止出现这种情况,您可以禁用应用程序服务器上的目录浏览。 您应该为管理控制台应用程序以及服务器上运行的其他应用程序执行此操作。 对于JBoss,请设置 <servlet> <servlet-name>默认</servlet-name> <servlet-class> org.apache.catalina.servlets.DefaultServlet </servlet-class> <init-param> <param-name>列表</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> 对于WebSphere,请将 对于WebLogic,将weblogic.xml文件中的index-directories属性设置为 <container-descriptor> <index-directory-enabled>false </index-directory-enabled> </container-descriptor> |
在保护数据库时,应实施数据库供应商描述的措施。 您应当为数据库用户分配最低要求的数据库权限,该权限授予AEM Forms在JEE上使用的权限。 例如,请勿使用具有数据库管理员权限的帐户。
在Oracle时,您使用的数据库帐户只需要CONNECT、资源和“创建视图”权限。 有关其他数据库的类似要求,请参见 正在准备在JEE(单服务器)上安装AEM Forms.
修改 [JBOSS_HOME]\standalone\configuration\lc_{datasource.xml}要添加 integratedSecurity=true
到连接URL,如以下示例所示:
jdbc:sqlserver://<serverhost>:<port>;databaseName=<dbname>;integratedSecurity=true
将sqljdbc_auth.dll文件添加到运行应用程序服务器的计算机上的Windows系统路径中。 sqljdbc_auth.dll文件与Microsoft SQL JDBC 6.2.1.0驱动程序安装一起找到。
将“从本地系统登录为”的JBoss Windows服务(JBoss for AEM Forms on JEE)属性修改为具有AEM Forms数据库和最低权限集的登录帐户。 如果您从命令行而不是作为Windows服务运行JBoss,则无需执行此步骤。
从设置SQL Server的安全性 混合 模式 仅Windows身份验证.
通过在Web浏览器的URL行中键入以下URL,启动WebLogic服务器管理控制台:
https://[host name]:7001/console
在“更改中心”(Change Center)下,单击 锁定和编辑.
在“域结构”(Domain Structure)下,单击 [base_domain] > 服务 > JDBC > 数据源 然后,在右窗格中,单击 IDP_DS.
在下一个屏幕上,在 配置 ,单击 连接池 选项卡和 属性 框,文字 integratedSecurity=true
.
在“域结构”(Domain Structure)下,单击 [base_domain] > 服务 > JDBC > 数据源 然后,在右窗格中,单击 RM_DS.
在下一个屏幕上,在 配置 ,单击 连接池 选项卡和 属性 框,文字 integratedSecurity=true
.
将sqljdbc_auth.dll文件添加到运行应用程序服务器的计算机上的Windows系统路径中。 sqljdbc_auth.dll文件与Microsoft SQL JDBC 6.2.1.0驱动程序安装一起找到。
从设置SQL Server的安全性 混合 模式 仅Windows身份验证.
在WebSphere上,仅当使用外部SQL Server JDBC驱动程序时,才能配置集成安全,而不是使用WebSphere嵌入的SQL Server JDBC驱动程序时。
integratedSecurity
和 值 框,文字 true
.integratedSecurity
和 值 框,文字 true
.AEM Forms数据库模式包含有关系统配置和业务流程的敏感信息,应隐藏在防火墙之后。 数据库应视为与表单服务器位于同一信任边界内。 为防止信息泄漏和业务数据失窃,数据库必须由数据库管理员(DBA)配置,以仅允许授权管理员访问。
为此,应当考虑使用数据库供应商专用工具来加密包含以下数据的表中的列:
有关特定于供应商的工具的信息,请参阅 "数据库安全信息".
轻型目录访问协议(LDAP)目录通常由JEE上的AEM Forms用作企业用户和组信息的源,以及执行密码验证的方法。 您应确保LDAP目录配置为使用安全套接字层(SSL),并且JEE上的AEM Forms配置为使用其SSL端口访问LDAP目录。
使用LDAP的常见攻击涉及攻击者故意多次未能进行身份验证。 这会强制LDAP目录服务器将用户从所有依赖LDAP的服务中锁定。
您可以设置当用户多次无法对AEM Forms进行身份验证时,AEM Forms实施的失败尝试次数和随后的锁定时间。 在管理控制台中,选择低值。 在选择失败尝试次数时,请务必了解,在进行所有尝试后,AEM Forms会在LDAP目录服务器之前锁定用户。
正确且安全地使用应用程序审核和日志记录有助于确保尽快跟踪和检测安全和其他异常事件。 在应用程序内有效使用审核和日志记录包括跟踪成功登录和失败登录等项目,以及关键应用程序事件(如创建或删除关键记录)。
您可以使用审核来检测多种类型的攻击,包括:
此表介绍了可用于减少服务器漏洞的审核和日志记录技术。
问题 |
描述 |
---|---|
日志文件ACL |
在JEE日志文件访问控制列表(ACL)中设置相应的AEM Forms。 设置适当的凭据有助于防止攻击者删除文件。 对于管理员和系统组,日志文件目录的安全权限应为“完全控制”。 AEM Forms用户帐户应仅具有读取和写入权限。 |
日志文件冗余 |
如果资源允许,请实时将日志发送到攻击者无法访问的其他服务器(只写),方法是使用Syslog、Tivoli、Microsoft Operations Manager(MOM)Server或其他机制。 以这种方式保护日志有助于防止篡改。 此外,在中央存储库中存储日志有助于进行关联和监控(例如,如果使用了多个表单服务器,并且在多台计算机上对每台计算机查询密码进行了猜测攻击)。 |
在JEE上成功安装AEM Forms后,务必定期维护环境的安全性。 本节介绍为维护JEE生产服务器上AEM Forms的安全性而建议执行的任务。
A 反向代理 可用于确保外部和内部用户均可使用JEE Web应用程序上AEM Forms的一组URL。 此配置比允许用户直接连接到JEE上运行AEM Forms的应用程序服务器更加安全。 反向代理为在JEE上运行AEM Forms的应用程序服务器执行所有HTTP请求。 用户只能通过网络访问反向代理,并且只能尝试反向代理支持的URL连接。
AEM Forms(在JEE根URL上),用于反向代理服务器
JEE Web应用程序上每个AEM Forms的以下应用程序根URL。 您应该配置反向代理,以便仅向最终用户显示要提供的Web应用程序功能的URL。
某些URL会作为面向最终用户的Web应用程序突出显示。 为了通过反向代理访问外部用户,您应避免公开Configuration Manager的其他URL。
根URL |
用途和/或关联的Web应用程序 |
基于Web的界面 |
最终用户访问权限 |
---|---|---|---|
/ReaderExtensions/* |
Acrobat Reader DC扩展最终用户web应用程序,用于对PDF文档应用使用权限 |
是 |
是 |
/edc/* |
Rights Management最终用户Web应用程序 |
是 |
是 |
/edcws/* |
用于Rights Management的Web服务URL |
否 |
是 |
/pdfgui/* |
PDF生成器管理Web应用程序 |
是 |
是 |
/workspace/* |
工作区最终用户Web应用程序 |
是 |
是 |
/workspace-server/* |
工作区客户端应用程序需要的Servlet和数据服务 |
是 |
是 |
/adobe-bootstrapper/* |
用于在JEE存储库上引导AEM Forms的Servlet |
否 |
否 |
/soap/* |
表单服务器Web服务的信息页 |
否 |
否 |
/soap/services/* |
所有表单服务器服务的Web服务URL |
否 |
否 |
/edc/admin/* |
Rights Management管理Web应用程序 |
是 |
否 |
/adminui/* |
管理控制台主页 |
是 |
否 |
/TruststoreComponent/ 已保护/* |
“信任存储管理”页 |
是 |
否 |
/FormsIVS/* |
Forms IVS应用程序,用于测试和调试表单渲染 |
是 |
否 |
/OutputIVS/* |
输出IVS应用在测试和调试输出服务中 |
是 |
否 |
/rmws/* |
用于Rights Management的REST URL |
否 |
是 |
/OutputAdmin/* |
输出管理页面 |
是 |
否 |
/FormServer/* |
Forms Web应用程序文件 |
是 |
否 |
/FormServer/GetImage Servlet |
用于在HTML转换期间获取JavaScript |
否 |
否 |
/FormServerAdmin/* |
Forms管理页面 |
是 |
否 |
/repository/* |
用于WebDAV(调试)访问的URL |
是 |
否 |
/AACComponent/* |
应用程序和服务用户界面 |
是 |
否 |
/WorkspaceAdmin/* |
工作区管理页面 |
是 |
否 |
/rest/* |
Rest支持页面 |
是 |
否 |
/CoreSystemConfig/* |
AEM Forms on JEE核心配置设置页面 |
是 |
否 |
/um/ |
用户管理身份验证 |
否 |
是 |
/um/* |
用户管理管理界面 |
是 |
否 |
/DoumentManager/* |
在启用了HTTP文档的SOAP传输或EJB传输上,上传和下载在访问远程端点、SOAP WSDL端点和Java SDK时要处理的文档。 |
是 |
是 |
跨站点请求伪造(CSRF)攻击利用网站对用户的信任来传输未经授权和无意的命令。 攻击的设置方式是:在网页中包含链接或脚本,或在电子邮件中包含URL,以访问用户已经通过身份验证的其他网站。
例如,您可能在同时浏览其他网站的同时登录到管理控制台。 其中一个网页可以包括带有 src
用于定位受害网站上的服务器端脚本的属性。 攻击网站利用Web浏览器提供的基于Cookie的会话身份验证机制,可以向此受害服务器端脚本发送恶意请求,伪装成合法用户。
CSRF具有以下共性:
AEM Forms on JEE使用反向链接过滤器功能阻止CSRF攻击。 本节使用以下术语来描述反向链接过滤机制:
反向链接过滤过程可描述如下:
表单服务器检查用于调用的HTTP方法:
表单服务器检查请求的URI是否列入允许列表被:
如果请求中存在反向链接,则服务器会检查它是否为允许的反向链接。 如果允许,则服务器会检查是否存在反向链接异常:
如果请求中没有反向链接,则服务器会检查是否允许空反向链接:
AEM Forms on JEE提供了反向链接过滤器,用于指定允许访问您的服务器资源的反向链接。 默认情况下,反向链接过滤器不会过滤使用安全HTTP方法(例如,GET)的请求,除非 CSRF_CHECK_GETS 设置为true。 如果允许的反向链接条目的端口号设置为0,则JEE上的AEM Forms将允许来自该主机的具有反向链接的所有请求,而不考虑端口号。 如果未指定端口号,则仅允许从默认端口80(HTTP)或端口443(HTTPS)发出请求。 如果删除了允许的反向链接列表中的所有条目,则会禁用反向链接过滤。
首次安装Document Services时,将使用安装Document Services的服务器的地址更新允许的反向链接列表。 服务器的条目包括服务器名称、IPv4地址、启用IPv6时的IPv6地址、环回地址和本地主机条目。 主机操作系统会返回添加到允许的反向链接列表的名称。 例如,IP地址为10.40.54.187的服务器将包含以下条目: https://server-name:0, https://10.40.54.187:0, https://127.0.0.1:0, http://localhost:0
. 对于由主机操作系统重新调整的任何不合格名称(没有IPv4地址、IPv6地址或合格域名的名称),允许列表不会更新。 修改允许的反向链接列表以适合您的业务环境。 请勿在生产环境中使用默认允许的反向链接列表部署表单服务器。 修改任何允许的反向链接、反向链接例外或URI后,确保重新启动服务器以使更改生效。
管理允许的反向链接列表
您可以从管理控制台的用户管理界面管理允许的反向链接列表。 用户管理界面提供了创建、编辑或删除列表的功能。 请参阅* 防止CSRF攻击* 管理帮助 有关使用允许的反向链接列表的更多信息。
管理允许的反向链接异常和允许的URI列表
AEM Forms on JEE提供了用于管理允许的反向链接异常列表和允许的URI列表的API。 您可以使用这些API来检索、创建、编辑或删除列表。 以下是可用API列表:
有关API的更多信息,请参阅* Jee API参考上的AEM Forms* 。
使用 LC_GLOBAL_ALLOWED_REFERER_EXCEPTION 全局级别允许的反向链接例外列表,即定义适用于所有应用程序的例外。 此列表仅包含具有绝对路径的URI(例如, /index.html
)或相对路径(例如, /sample/
)。 您还可以在相对URI的末尾附加正则表达式,例如, /sample/(.)*
.
的 LC_GLOBAL_ALLOWED_REFERER_EXCEPTION 列表ID在 UMConstants
类 com.adobe.idp.um.api
命名空间,在 adobe-usermanager-client.jar
. 您可以使用AEM Forms API创建、修改或编辑此列表。 例如,要创建全局允许的反向链接例外列表,请使用:
addAllowedRefererExceptions(UMConstants.LC_GLOBAL_ALLOWED_REFERER_EXCEPTION, Arrays.asList("/index.html", "/sample/(.)*"))
使用 CSRF_ALLOWED_REFERER_EXCEPTIONS 特定于应用程序的例外列表。
禁用反向链接过滤器
如果反向链接过滤器完全阻止对表单服务器的访问,并且您无法编辑允许的反向链接列表,则可以更新服务器启动脚本并禁用反向链接过滤。
包括 -Dlc.um.csrffilter.disabled=true
启动脚本中的JAVA参数并重新启动服务器。 确保在正确重新配置允许的反向链接列表后删除JAVA参数。
自定义WAR文件的反向链接过滤
您可能已创建自定义WAR文件以在JEE上与AEM Forms一起使用,以满足您的业务要求。 要为自定义WAR文件启用反向链接过滤,请包括 adobe-usermanager-client.jar 在WAR的类路径中,并在* web.xml*文件中包含一个筛选条目,并包含以下参数:
CSRF_CHECK_GETS 控制GET请求的反向链接检查。 如果未定义此参数,则默认值设置为false。 仅当您想要过滤GET请求时,才应包含此参数。
CSRF_ALLOWED_REFERER_EXCEPTIONS 是允许的反向链接例外列表的ID。 反向链接过滤器可阻止来自由列表ID标识的列表中反向链接的请求在表单服务器上调用任何资源。
CSRF_ALLOWED_URIS_LIST_NAME 是允许的URI列表的ID。 反向链接过滤器不会阻止对列表ID标识的列表中任何资源的请求,而与请求中反向链接标头的值无关。
CSRF_ALLOW_NULL_REFERER 当反向链接为null或不存在时,控制反向链接过滤器行为。 如果未定义此参数,则默认值设置为false。 仅当您希望允许空反向链接时,才包含此参数。 允许空反向链接可能会允许某些类型的跨站点请求伪造攻击。
CSRF_NULL_REFERER_EXCEPTIONS 是URI列表,当Referrer为null时,不会对其执行反向链接检查。 此参数仅在 CSRF_ALLOW_NULL_REFERER 设置为false。 在列表中用逗号分隔多个URI。
以下是 web.xml 文件 示例 战争文件:
<filter>
<filter-name> filter-name </filter-name>
<filter-class> com.adobe.idp.um.auth.filter.RemoteCSRFFilter </filter-class>
<!-- default is false -->
<init-param>
<param-name> CSRF_ALLOW_NULL_REFERER </param-name>
<param-value> false </param-value>
</init-param>
<!-- default is false -->
<init-param>
<param-name> CSRF_CHECK_GETS </param-name>
<param-value> true </param-value>
</init-param>
<!-- Optional -->
<init-param>
<param-name> CSRF_NULL_REFERER_EXCEPTIONS </param-name>
<param-value> /SAMPLE/login, /SAMPLE/logout </param-value>
</init-param>
<!-- Optional -->
<init-param>
<param-name> CSRF_ALLOWED_REFERER_EXCEPTIONS </param-name>
<param-value> SAMPLE_ALLOWED_REF_EXP_ID </param-value>
</init-param>
<!-- Optional -->
<init-param>
<param-name> CSRF_ALLOWED_URIS_LIST_NAME </param-name>
<param-value> SAMPLE_ALLOWED_URI_LIST_ID </param-value>
</init-param>
</filter>
........
<filter-mapping>
<filter-name> filter-name </filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
疑难解答
如果CSRF筛选器阻止了合法的服务器请求,请尝试以下任一操作:
本节介绍AEM Forms on JEE所需的协议和端口,并提供了在安全网络配置中部署AEM Forms on JEE的建议。
如上节所述,当您配置安全网络架构时,在JEE上的AEM Forms与企业网络中的其他系统之间进行交互时,需要以下网络协议。
协议 |
使用 |
---|---|
HTTP |
|
SOAP |
|
RMI |
在企业JavaBeans(EJB)模式中使用时,JEE上的AEM Forms SDK调用 |
IMAP / POP3 |
|
UNC文件IO |
AEM Forms on JEE监控已监视文件夹以输入到服务(已监视文件夹端点) |
LDAP |
|
JDBC |
|
WebDAV |
允许任何WebDAV客户端在JEE设计时存储库(表单、片段等)上远程浏览AEM Forms |
AMF |
AdobeFlash应用程序,其中JEE服务器服务上的AEM Forms配置了远程处理端点 |
JMX |
AEM Forms on JEE公开MBean以使用JMX进行监控 |
本节介绍支持的每种类型应用程序服务器的默认端口(和备用配置范围)。 必须在内部防火墙上启用或禁用这些端口,具体取决于您希望允许连接到在JEE上运行AEM Forms的应用程序服务器的客户端的网络功能。
默认情况下,服务器会在adobe.com命名空间下公开多个JMX MBean。 只有对服务器运行状况监控有用的信息才会公开。 但是,为防止信息泄露,您应防止不受信任的网络中的呼叫者查找JMX MBean并访问运行状况量度。
JBoss端口
用途 |
端口 |
---|---|
访问Web应用程序 |
[JBOSS_Root]/standalone/configuration/lc_[database].xml HTTP/1.1连接器端口8080 AJP 1.3连接器端口8009 SSL/TLS连接器端口8443 |
CORBA支持 |
[JBoss根]/server/all/conf/jacorb.properties OAPort 3528 OASSLPort 3529 |
WebLogic端口
用途 |
端口 |
---|---|
访问Web应用程序 |
|
在JEE上访问AEM Forms不需要WebLogic管理端口 |
|
WebSphere端口
有关JEE上的AEM Forms所需的WebSphere端口的信息,请转到WebSphere应用程序服务器UI中的端口号设置。
有关部分中描述的物理架构 AEM Forms on JEE物理架构,则应该为您计划使用的所有连接配置SSL。 具体而言,所有SOAP连接都必须通过SSL进行,以防止用户凭据在网络上泄露。
有关如何在JBoss、WebLogic和WebSphere上配置SSL的说明,请参阅 管理帮助.
在将应用程序服务器配置为支持SSL后,必须确保对应用程序和服务的所有HTTP流量都强制执行,以使用SSL端口。
要为WebSphere或WebLogic配置SSL重定向,请参阅您的应用程序服务器文档。
打开命令提示符,导航到/JBOSS_HOME/standalone/configuration目录,然后执行以下命令:
keytool -genkey -alias jboss7 -keyalg RSA -keystore server.keystore -validity 10950
打开JBOSS_HOME/standalone/configuration/standalone.xml文件进行编辑。
在 <subsystem xmlns="urn<span id=" translate="no" />域:web:1.1" native="false" default-virtual-server="default-host">元素,添加以下详细信息::jboss:
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" enabled="true" secure="true"/>
在https连接器元素中添加以下代码:
<connector name="https" protocol="HTTP/1.1" scheme="https" socket-binding="https" secure="true" enabled="true">
<ssl name="jboss7_ssl" key-alias="jboss71" password="Tibco321" certificate-key-file="../standalone/configuration/server.keystore" protocol="TLSv1"/>
</connector>
保存并关闭standalone.xml文件。
本节包含特定于Windows的安全建议,当这些建议用于在JEE上运行AEM Forms时。
默认情况下, JEE上的AEM Forms统包安装使用本地系统帐户来设置服务帐户。 内置的本地系统用户帐户具有高级别的可访问性;它属于管理员组。 如果工作进程标识作为本地系统用户帐户运行,则该工作进程拥有对整个系统的完全访问权限。
在Microsoft管理控制台(MMC)中,为表单服务器服务创建一个本地用户,以登录方式:
选择 设置 > 管理工具 > 服务.
双击应用程序服务器服务并停止该服务。
在 登录 选项卡,选择 此帐户,浏览您创建的用户帐户,然后输入该帐户的密码。
在“本地安全设置”窗口的“用户权限分配”下,为表单服务器在下运行的用户帐户提供以下权限:
为新的用户帐户授予在JEE Web内容目录上读取和执行、列出文件夹内容和读取AEM Forms的权限。
启动应用程序服务器服务。
AEM Forms on JEE通过以下方式使用文件系统:
使用监视文件夹作为通过表单服务器服务发送和接收文档的方式时,请对文件系统安全性采取额外的预防措施。 当用户在已监视文件夹中放置内容时,该内容将通过已监视文件夹公开。 在这种情况下,服务不会验证实际的最终用户。 相反,它依赖在文件夹级别设置的ACL和共享级别安全性来确定谁可以有效地调用服务。
本节包含特定于JBoss 7.0.6的应用程序服务器配置建议,当这些建议用于在JEE上运行AEM Forms时。
在JBoss上的JEE上使用统包安装方法安装AEM Forms时,已配置对JBoss管理控制台和JMX控制台的访问权限(禁用JMX监视)。 如果您使用自己的JBoss应用程序服务器,请确保对JBoss管理控制台和JMX监控控制台的访问是安全的。 在名为jmx-invoker-service.xml的JBoss配置文件中设置对JMX监控控制台的访问权限。
登录到管理控制台后,可以通过修改URL浏览控制台的目录列表。 例如,如果将URL更改为以下URL之一,则可能会显示目录列表:
https://<servername>:8080/adminui/secured/
https://<servername>:8080/um/
本节包含有关在JEE上运行AEM Forms时保护WebLogic 9.1的应用程序服务器配置建议。
将weblogic.xml文件中的index-directories属性设置为 false
,如以下示例所示:
<container-descriptor>
<index-directory-enabled>false
</index-directory-enabled>
</container-descriptor>
默认情况下, WebLogic不启用默认的SSL侦听端口7002。 在配置SSL之前,请在WebLogic服务器管理控制台中启用此端口。
本节包含有关保护在JEE上运行AEM Forms的WebSphere的应用程序服务器配置建议。
设置 directoryBrowsingEnabled
ibm-web-ext.xml文件中的属性 false
.