Confluence 6 安全概述和建议概述

这个文档是针对 Confluence 的系统管理员希望对 Confluence Web应用程序安全性进行评估而设计的。这个页面将对系统的安全进行大致的描述,同时也会对 Confluence 的安全配置提供建议。作为一个向公众开放的 Web 应用程序,Confluence 的应用程序级别的安全是非常重要的。这个页面同时也对使用我们产品的用户经常可能会问到的一些安全问题进行说明。
你可能希望参考的一些其他的主题:

应用程序安全概述 密码存储当 Confluence 的内部用户管理被使用以后,从 Confluence 3.5 版本开始,用户的密码将会使用 PKCS5S2 implementation provided by Embedded Crowd 哈希加密算法加密后存储到数据库中。 在 Confluence 中将会没有其他机制能够获得用户的密码——除了通过密码重置的方法,一个重置密码的电子邮件链接将会发送到用户注册使用的电子邮件地址中。
当外部的用户管理被启用后,用户的密码将会存储在外部用户管理系统中。

换从区溢出Confluence 100% 的纯 Java 应用程序而没有使用本地组件。因此应用程序对缓冲区溢出有比较强抵抗力——可能的缓冲区溢出将会被限制在 Java 运行环境(Java Runtime Environment)本身。

SQL 注入Confluence 是通过 Hibernate Object-Relational 映射进行交互的。数据库的查询使用标准的 APIs 来生成,是使用参数进行替换的,而不是使用字符串连接的的。因此,Confluence 能够具有很高的 SQL 注入攻击抵抗性。

脚本(Script )注入 Confluence 是一个自容器的 Java 应用程序,并不能运行在外部的进程中。因此 Confluence 能够对脚本注入攻击具有很高的抵抗性。
跨站点脚本作为一个内容管理系统,允许用户能够在系统中创建内容,并且将创建的内容发布在网络上。我们将会对跨站点脚本攻击进行更多的关注:

  • Confluence 中的 Wiki 标记语言不支持危险 HTML 标记
  • 在默认的情况下,你不能向宏中插入 原生 HTML 标记
  • HTML 作为附件上传到服务器上话,这个文件将会在下载的时候保存为 content-type 类型,而不是在浏览器中显示。
  • 只有系统管理员级别的用户才可以对应用程序进行 HTML-level 级别的自定义

当跨平台脚本安全漏洞在 Confluence 被发现后,我们将会以最快的速度对这个漏洞进行修复。

传输层安全Confluence 并不直接支持 SSL/TLS。Confluence 的管理员如果对传输层安全性有所顾虑的话,应该考虑在 Java 应用服务器级别设置 SSL/TLS 或者在 Confluence 应用服务器前面使用 HTTP 方向代理。
有关如何在 Confluence 中配置 SSL 的信息,请参考 Running Confluence Over SSL or HTTPS 页面中的内容。

会话管理Confluence 使用 Java 应用服务器的会话管理。在现有的情况下,我们并没有获得任何有关会话劫持针对 Confluence 的攻击。如果你现在正在将 Confluence 部署到其他的一些应用服务器上,你应该确保会话不会被劫持。

插件安全管理员在 Confluence 安装第三方插件所带来的风险为**自负风险( at their own risk)。**安装的插件将会与 Confluence 在相同的虚拟机上运行,同时也能够访问所有的 Java Runtime 环境,包括 Confluence 服务器 API。
管理员在 Confluence 安装插件的时候应该对插件的来源进行校验,确保安装的插件来源。

管理员信任模型Confluence 是基于所有具有 System Administrator privileges 都是可以被信任的。系统管理员可以直接安装插件,对 Confluence 的性能和配置进行调整。
与其他任何应用程序一样,你不应该将 Confluence 在 root/Administrator 用户权限运行。如果你希望你的 Confluence 监听私有的网络端口,你应该配置 Confluence 使用端口转移(port forwarding)或者使用反向代理,而不是给 Confluence 添加其他的权限。当你考虑让 Confluence 在 chroot 下运行的话,你需要非常小心。

堆栈跟踪 希望对 Confluence 的问题进行调试,当出现问题的时候 Confluence 将会在界面中提供错误的堆栈信息。这些堆栈的信息包括了 Confluence 在运行的时候的信息,同时还包括了有关你开发服务器的一些信息。

只有非个人信息在堆栈中显示,例如操作系统的版本和 Java 的版本。针对正确的网络设置,这些信息将会不足够对错误的问题进行诊断。用户的用户名和密码将不会显示出来。