DokuWiki

It's better when it's simple

用户工具

站点工具


zh:security

安全

DokuWiki 是一种经常被使用在公共服务上的网络应用。这意味着,例如比起你桌面系统的本地应用,你要承担更多的风险接受恶意使用者的攻击。

DokuWiki 以安全的思想进行开发。我们试着在用户友好和安全之间找到一个平衡,但当无法找到满意的妥协时,更倾向于安全。

该页面对你应该关注哪些方面提供了一个概览,确保你的 DokuWiki 是安全的。

报告和通知

当你发现 DokuWiki 的安全问题时,请通知我们。你可以按以下方法进行:

前两个作为提交 bug 的首选方法,除非当您发现非常严重的错误,如果在 patch 提供之前使该 bug 公开,会危机到全世界已经安装 Dokuwiki 的使用者,那么您应该考虑第三种联系方法。

所有的以前的安全问题可以在这里找到。

根据已知安全问题的严重性,非常小的问题会在以后的版本中进行修正,又或者制作并释放 bugfix。在后一种情况下,更新检查机制会通知用户进行必要的更新。

你应该经常使用当前释放 DokuWiki 的最新版本,因为没有为旧版本发布安全修正程序。

网站访问安全

DokuWiki 使用文件来存储配置和页面数据。你必须确保这些页面绝不能直接的从网络访问。发布的压缩包里面含有一组 “.htaccess”文件,这些文件会告诉 Apache Web 服务器拒绝访问某些目录。

如果你不使用 Apache Web 服务器又或者你的 Apache 不能使用 “.htaccess” 文件,那么你需要手动设置,确保你的安装安全可靠。

以下目录应该从网络直接访问:

  • data
  • conf
  • bin
  • inc(尽管可访问时没有危险)

要检查你是否需要调整访问权限,你可以试着访问http://yourserver.com/data/pages/wiki/dokuwiki.txt。你应该无法以这种方法访问到该文件。

如果你的目录没有进行适当的安全设置,请阅读以下小节,它会告诉你如何做到这些。

在Apache中拒绝目录访问

最简单的方法就是在您的 Apache 配置中开启 .htaccess 支持。请参考Apache的 .htaccess 教程

在 IIS 中拒绝目录访问

可以在 IIS 的配置设置中禁用上述目录的访问。

  1. 打开配置工具:开始 → 设置 → 控制面板 → 管理员工具 → IIS 服务
  2. 浏览到你想要保护的目录:本地计算机 → 网站 → 默认网站 → 目录的路径
  3. 右击文件夹选择属性 → 目录安全 → IP地址和域名限制 → 编辑…
  4. 选择“默认情况下,对所有计算机拒绝访问”。

在iis7配置设置中禁用上述目录的访问的方法

  1. 打开配置工具:开始 → 设置 → 控制面板 → 管理员工具 → IIS 服务
  2. 浏览到你想要保护的目录:本地计算机 → 网站 → 默认网站 →右边功能视图中找到iis里的请求筛选
  3. 在URL里添加.你需要保护的目录.

更简单的办法就是在dokuwiki的根目录下.找到web.config文件
如果没有就创建一个
打开改为以下代码

web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <security>
            <requestFiltering>
                <filteringRules>
                </filteringRules>
                <alwaysAllowedUrls>
                    <add url="/data/media/" />
                </alwaysAllowedUrls>
                <denyUrlSequences>
                    <add sequence="/data/" />
                    <add sequence="/conf/" />
                    <add sequence="/bin/" />
                    <add sequence="/inc/" />
                </denyUrlSequences>
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>

将目录移出根文档

为了避免任何对上述目录的访问,最安全的方法就是把它们从 Web 服务所谓的“根文档”中移出来。

data 目录

  1. 从根文档中移出 “data” 目录(和它所有的内容)
  2. 编辑 savedir 设置,使它指向 “data” 目录的新位置。

例如,如果把 “data” 目录移动到 “/home/yourname/data”,添加以下这一行到 “conf/local.php”:

$conf['savedir'] = '/home/yourname/data/';

conf 目录

  1. 从根文档中移出 “conf” 目录(和它所有的内容)
  2. 在 “inc” 目录内创建一个名为 preload.php 的文件,设置 “DOKU_CONF” 定义并使它指向 “conf” 目录的新地址。

例如,如果把 “conf” 目录移动到 “/home/yourname/conf”,创建以下的 “inc/preload.php”文件:

inc/preload.php
<?php
 
define('DOKU_CONF','/home/yourname/conf/');

bin 目录

bin 目录包含了命令行工具。如果你没有 shell 可以访问你的服务器,你可以简单的删除该目录和它的内容。否则只要把它移出文档根即可。不需要更多的配置工作。

inc 目录

从文档根中移出该目录,直到目前还没有简单的方法。但是因为它不包含任何的敏感数据,所以不值得努力尝试移出它了。

DokuWiki 配置设置

DokuWiki 包含了多个配置设置,对安装的各个安全方面产生影响。请参阅每个设置文档,以了解它们能做什么以及建议的设置。

插件安全

DokuWiki 拥有大量的社群贡献的插件。插件通过添加新的代码为 DokuWiki 提供新的功能。这意味着该代码实际上已经访问到你的服务器。此外在一个完全特设的方式下,插件与 DokuWiki 是分开发布的。它们不像 DokuWiki 的核心代码库那样得到同样的关注和审查。所以,在安装一个插件之前的安全措施是有必要的。

这里有一些提示,帮助你选择你想要安装的插件。

  • 如果可以,在安装插件之前,你应该检阅一下插件的源代码。
  • 如果有疑问,请在邮件列表提问。
  • 插件安装在 DokuWiki 的 lib 目录下,它可以从外部直接访问。检查一下该插件包含哪些文件,并使用适当的 .htaccess 文件锁定对它们的访问。
  • 插件的创作与开发与 DokuWiki 项目没有直接的关系 - 他们可能是经验不足,有恶意或可能是已经被入侵的服务器插件的源代码。小心选择你信任的插件!
  • 回顾上述的安全警告,同时,当插件有可用的新版本时为插件进行升级。

附加阅读

zh/security.txt · 最后更改: 2016-12-24 09:49 由 heiljsf

除额外注明的地方外,本维基上的内容按下列许可协议发布: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki