安全在AEM -这是一个问题的平台或实施的方法是什么?

发言者:安德烈·平丘克 | 认证的高级AEM开发

想象一下这种情况:您安然入睡,看到自己的第三个梦,突然电话响了-不满意的客户抱怨整个系统不可用。 同意,这些事件 - 为整个团队和解决方案提供商的生命AEM-开发商不适。 无计可施,早早起床,并寻求解决办法来。


那你的职业生涯并没有达到这样郁郁寡欢的时刻,说说常见的安全问题以及如何最好地确保他们。



我会坚持这样的计划:


  1. 作者级别的安全性;
  2. 发布级别的安全性;
  3. dispatchera安全;
  4. CSRF框架保护;
  5. DDoS攻击。


基本技巧,保护的Adobe体验经理


如果每个开发人员对如何保护平台免受数据泄漏的普遍了解,AEM项目的世界将变得更加美好。 根据下图,我们有几个pablishey和两个或更多dispatcherov(所谓的均衡)的作者。 实际上,就数据保护而言,这三个级别首先值得关注。 这些是世界各地AEM社区普遍接受的经典工作规则。




1.使用HTTPS。 AEM迅速发展,提供了在另一个更安全的协议上创建作者的灵活性。 这足以生成密钥“SSL向导”,创建路径给它,因此,使用更安全的协议。 在Adobe的建议中-此步骤正是安全性的第一要务。


2.安装具有最新更新的软件包。 开发人员的标准流程归结为以下事实:在处理组件和服务时,您必须在Google中寻找解决方案。 此步骤的目标是定期监视Service Pack和Hot Fix。 然后去很多的问题,包括有关数据的安全性。 尽管这不是灵丹妙药,但重要的是要使系统保持最新状态。




3.创建带有错误消息的整洁页面。 如果最初创建的页面上包含错误的简短说明,则客户端将立即看到该页面不起作用,而开发人员已经在解决该问题。 逻辑上您不会传递这些信息,但是您可以避免客户端和测试人员的恐慌以及任务的混乱。


4.拒绝设置密码并登录“ admin-admin”。 这不会是好笑,但低质量的用户名和密码的问题是足够常见的,即使在AEM。 据追求速度或其他因素的结果,我们得到最影响的系统。 一旦发现原始登录详细信息已建立,请尝试说服团队/上级,并尽快将其更改为更可靠的登录名。


安全上作者级


首先, 使用VPN。 使用虚拟保护网络是安全专用网络的工作,用于在您和服务器之间建立安全连接。 这是一个简单而重要的工具:由于将对流量进行加密,因此无法确定从何处发送数据。 事实证明,使用vPn,没有人可以访问您的实例。


这种方法适用于远程开发人员以及所有在不稳定的Internet连接下从不同位置进行工作的开发人员。


其次, 您的“作者”应始终处于关闭状态,包括Google 。 因此,您可以获取密码并入侵系统:由于疏忽,作者可能会被收录索引。 为了测试在搜索引擎中的漏洞,请在他的域的线和路径作者和CRX。 是的,你可以联系的Yandex或谷歌删除以下行的问题。 但是,在解决问题的同时,该系统将已经公开可用。




第三, 不要低估“管理员”用户的特权,该用户通常具有执行任何可用操作的能力。


当员工向公司告别时,这一点尤其重要。 毕竟,大多数企业进入一个实例是不是个人,而是通过一个管理员帐户。 这是更符合逻辑却反其道而行之,并了解特定作者的特定更改到系统中。


AEM 6.1引入了一种新方法,您可以在其中设置捆绑软件或用户服务的特定权限。 但最好是使配置文件名:和员工的快乐和企业更容易跟踪谁拥有什么样的访问级别的系统。 此方法与作者和发布者级别有关。


发布安全性


作为一项规则,只有时间长的项目通知后,未检查匿名用户。 虽然普通的用户可能对在匿名的操作限制 - 它经常发生,很多更多的权利来执行操作。




Apache Sling Referrer过滤器是一种方便有效的机制,可确保您的应用程序安全。 例如,发送一个指标在AEM,您看到收件箱中的有关数据发送的信息。 如果超过默认值,则第三方系统可能会发送此请求。 这意味着任何人都将无法发送请求。 您将域输入配置中;在请求时,它将域与原始输入的数据进行比较,如果一切都匹配,则进行集成。


事实证明,使用过滤器可以进行更灵活的配置:您可以指定请求,方法,主机。 对于更详细的查询,也有一个空值或一个星号。




调度程序级别的安全性


在10%的情况下,开发人员都面临争议。 因此,这是我们设置斜线的类型主要配置文件(禁用/启用)。



通常,开发人员要做一个小任务,创建一条规则,而忘记了它将增加漏洞。 为了让没人尝试攻击您的实例,您需要在可用性时使用选择器检查url。


通过配置文件,您可以指定标题的处理。 因为更准确地指定字形的方法等,如此详细的设置是不完全什么都不会破裂。 这些都是基本的例子。 如果有成百上千条这样的规则怎么办?


最简单的方法是启用日志记录。 根据您的Apache的版本,也许有点改变运行机制。 但是,系统会立即向您突出显示哪个URL,哪个特定规则正在为您制定,哪些仍需要更正。


您还可以在规则中指定域:这是对集成的引用。
一旦调度用于缓存查询运行得更快:没有必要去任何地方,检查和你是准备给客户端。 另外,此方法大大提高了应用程序的安全性。


跨站请求伪造 -伪造请求。



CSRF的一般原则:假设银行的网站上使用您的帐户。 授权后,您将在浏览器中进行一次包含Cookie的标准会话,您将收到一封电子邮件,并点击指向可疑网站的链接。 攻击者在其上嵌入一个表格,完成后,您的数据将被发送到银行的网站。


关键是在HTTP协议中。 攻击者不需要大量数据:此请求就足够了。 银行的服务器将看到:请求进来的时候,也有饼干和会话,所有的权利。 这是怎样一个典型的攻击。


AEM可以提供什么来防止查询伪造
保护的经典示例是字符串中“秘密”的生成。 生成表单时,将从隐藏字段中添加此秘密令牌。 如果你去到攻击者的网站时,系统会检测到没有令牌或无效的,并拒绝发送数据。 有时候,让用户本身的保护。


现在,您有了一个常规的Ajack,无法在其中添加隐藏字段。 在授权阶段,服务器将向您返回一个带有SCRF名称的cookie,并将其传输到标头,然后将其发送到服务器。 因此,您签署了请求。


AEM将为您做所有事情:它将生成密钥,令牌,将检查表单提交


在某些情况下,应用程序是用React编写的,很难集成。 在AEM已经考虑到了这种情况:它是足以去入点和签署,以供审查。 适用于使用非标准组件和库。



还有什么可以做,以保护系统:

  • 对此负责的图书馆。 没有意义的补充,只要不破。
  • 在较低级别,您可以看到所有“秘密”。 这是对数据的一种验证。
  • 很简单:有一个现成的api,您已经免受这种攻击。


DDOS攻击 - 第二个最流行的攻击


目标是耗尽服务器的物理功能。 某些主机上正在发出数百万个请求。 当它们变得无限多时,系统开始物理上无法应付。 通常,它们会从多个来源进行强大的攻击并使用VPN。 其中100%没有保险; 但我们不要帮助他们。



在这种情况下,系统容易受到攻击:

  • 用错误的后缀配置系统;
  • 有许多关于AV的请求,公共调度员无法转发。
  • 当不禁止显示无限数量的内容节点时。 具体地,渲染器JSON,其可以遍历在几个层次的树状结构。
  • 本地主机 :4502 /上传.json可以重置整个库格式JSON表示。


为了使您在AEM上的工作更安全,请专注于特定用户的功能。


不要忘记浏览Adobe Security Checklist ,并让您在AEM上的项目保持稳定。

Source: https://habr.com/ru/post/zh-CN468231/


All Articles