====== 安全 ====== DokuWiki 是一种经常被使用在公共服务上的网络应用。这意味着,例如比起你桌面系统的本地应用,你要承担更多的风险接受恶意使用者的攻击。 DokuWiki 以安全的思想进行开发。我们试着在用户友好和安全之间找到一个平衡,但当无法找到满意的妥协时,更倾向于安全。 该页面对你应该关注哪些方面提供了一个概览,确保你的 DokuWiki 是安全的。 ===== 报告和通知 ===== 当你发现 DokuWiki 的安全问题时,请通知我们。你可以按以下方法进行: * 提交一个[[:bugs|]] * 发送邮件到[[:mailinglist|邮件列表]] * 发送私人邮件到[[andi@splitbrain.org]] 前两个作为提交 bug 的首选方法,除非当您发现非常严重的错误,如果在 patch 提供之前使该 bug 公开,会危机到全世界已经安装 Dokuwiki 的使用者,那么您应该考虑第三种联系方法。 所有的以前的安全问题可以在[[http://bugs.dokuwiki.org/index.php?tasks=all&project=1&type=1&cat=5&status=all&perpage=20|这里]]找到。 根据已知安全问题的严重性,非常小的问题会在以后的版本中进行修正,又或者制作并释放 bugfix。在后一种情况下,[[:update check|更新检查]]机制会通知用户进行必要的更新。 你应该**经常**使用当前释放 DokuWiki 的最新版本,因为没有为旧版本发布安全修正程序。 ===== 网站访问安全 ===== DokuWiki 使用文件来存储配置和页面数据。你必须确保这些页面绝不能直接的从网络访问。发布的压缩包里面含有一组 ".htaccess"文件,这些文件会告诉 Apache Web 服务器拒绝访问某些目录。 **如果你不使用 Apache Web 服务器又或者你的 Apache 不能使用 ".htaccess" 文件,那么你需要手动设置,确保你的安装安全可靠。** 以下目录**不**应该从网络直接访问: * ''data'' * ''conf'' * ''bin'' * ''inc''(尽管可访问时没有危险) 要检查你是否需要调整访问权限,你可以试着访问''%%http://yourserver.com/data/pages/wiki/dokuwiki.txt%%''。你应该无法以这种方法访问到该文件。 如果你的目录没有进行适当的安全设置,请阅读以下小节,它会告诉你如何做到这些。 ==== 在Apache中拒绝目录访问 ==== 最简单的方法就是在您的 Apache 配置中开启 ''.htaccess'' 支持。请参考[[http://httpd.apache.org/docs/2.2/howto/htaccess.html|Apache的 .htaccess 教程]]。 ==== 在 IIS 中拒绝目录访问 ==== 可以在 IIS 的配置设置中禁用上述目录的访问。 - 打开配置工具:开始 -> 设置 -> 控制面板 -> 管理员工具 -> IIS 服务 - 浏览到你想要保护的目录:本地计算机 -> 网站 -> 默认网站 -> //目录的路径// - 右击文件夹选择属性 -> 目录安全 -> IP地址和域名限制 -> 编辑... - 选择“默认情况下,对所有计算机拒绝访问”。 在iis7配置设置中禁用上述目录的访问的方法 - 打开配置工具:开始 -> 设置 -> 控制面板 -> 管理员工具 -> IIS 服务 - 浏览到你想要保护的目录:本地计算机 -> 网站 -> 默认网站 ->右边功能视图中找到iis里的请求筛选 - 在URL里添加.你需要保护的目录. 更简单的办法就是在dokuwiki的根目录下.找到web.config文件\\ 如果没有就创建一个\\ 打开改为以下代码 ==== 将目录移出根文档 ==== 为了避免任何对上述目录的访问,最安全的方法就是把它们从 Web 服务所谓的“根文档”中移出来。 === data 目录 === - 从根文档中移出 "data" 目录(和它所有的内容) - 编辑 [[config:savedir]] 设置,使它指向 "data" 目录的新位置。 例如,如果把 "data" 目录移动到 "/home/yourname/data",添加以下这一行到 "conf/local.php": $conf['savedir'] = '/home/yourname/data/'; === conf 目录 === - 从根文档中移出 "conf" 目录(和它所有的内容) - 在 "inc" 目录内创建一个名为 preload.php 的文件,设置 "DOKU_CONF" 定义并使它指向 "conf" 目录的新地址。 例如,如果把 "conf" 目录移动到 "/home/yourname/conf",创建以下的 "inc/preload.php"文件: === bin 目录 === bin 目录包含了[[:CLI|命令行工具]]。如果你没有 shell 可以访问你的服务器,你可以简单的删除该目录和它的内容。否则只要把它移出文档根即可。不需要更多的配置工作。 === inc 目录 === 从文档根中移出该目录,直到目前还没有简单的方法。但是因为它不包含任何的敏感数据,所以不值得努力尝试移出它了。 ===== DokuWiki 配置设置 ===== DokuWiki 包含了多个配置设置,对安装的各个安全方面产生影响。请参阅每个设置文档,以了解它们能做什么以及建议的设置。 * [[config:allowdebug]] -- 禁止调试输出,以避免系统信息泄露 :!: * [[config:fmode]], [[config:dmode]] -- 设置 DokuWiki 创建文件的文件权限,也可以看到关于建立[[permissions|权限]]的信息。 * [[config:fetchsize]] -- 配置外部数据缓存 * [[config:fullpath]] -- 显示页面的完整路径名 * 所有的 [[auth|验证设置]] * [[config:usewordblock]] -- 通过黑名单,防止垃圾邮件 * [[config:mailguard]] -- 避免收集邮件地址的机器人 * [[config:iexssprotect]] -- 在 IE 中防范跨站脚本问题 * [[config:htmlok]] -- 开启 HTML * [[config:phpok]] -- 开启 PHP * [[config:hidepages]] -- 在索引和搜索中隐藏特定页面 * [[config:safemodehack]] -- 解决安全模式的限制 ===== 插件安全 ===== DokuWiki 拥有[[plugins|大量的社群贡献的插件]]。插件通过添加新的代码为 DokuWiki 提供新的功能。这意味着该代码实际上已经访问到你的服务器。此外在一个完全特设的方式下,插件与 DokuWiki 是分开发布的。它们不像 DokuWiki 的核心代码库那样得到同样的关注和审查。所以,在安装一个插件之前的安全措施是有必要的。 这里有一些提示,帮助你选择你想要安装的插件。 * 如果可以,在安装插件//之前//,你应该检阅一下插件的源代码。 * 如果有疑问,请在[[mailinglist|邮件列表]]提问。 * 插件安装在 DokuWiki 的 ''lib'' 目录下,它可以从外部直接访问。检查一下该插件包含哪些文件,并使用适当的 .htaccess 文件锁定对它们的访问。 * 插件的创作与开发与 DokuWiki 项目没有直接的关系 - 他们可能是经验不足,有恶意或可能是已经被入侵的服务器插件的源代码。小心选择你信任的插件! * 回顾上述的安全警告,同时,当插件有可用的新版本时为插件进行升级。 ===== 附加阅读 ===== 这里有一些更多关于安全方面的内部和外部网页。 * [[acl|设置访问控制]] * [[tips:httpslogin|通过 Https 强行登陆]] * [[install:php|对 DokuWiki 的 php 设置]] * [[tips:clean_acl|Remove ACL rules for deleted pages]] * {{http://www.apachesecurity.net/download/apachesecurity-ch03.pdf|Apache 安全 - 第三章:PHP的锁定}}.