目次

セキュリティ

DokuWiki は Web アプリケーションであり、多くの場合インターネットから到達可能な公開サーバ上で利用されています。これは、例えばデスクトップシステム上のローカルアプリケーションに比べると、悪意のある人々から攻撃されるリスクがより大きいということを意味します。

DokuWiki はセキュリティを念頭に置いて開発されています。私たちはユーザビリティとセキュリティのバランスを取ろうと試みていますが、満足のいく妥協点が見つけられない場合はセキュリティを優先しています。

このページでは、あなたの DokuWiki が安全であることを確認するためにはどのような面に気を配らなければならないのかについて、概要を説明します。

報告と通知

DokuWiki にセキュリティの問題を発見した場合は、私たちにお知らせください。推奨される通知方法は以下の通りです。

非常に重大な、パッチが提供される前にバグを公開することで世界中の DokuWiki を危険にさらしてしまう可能性があるようなバグを除き、最初の 2 つの方法が推奨されます。

これまでのすべてのセキュリティの問題は、バグトラッキングシステムで見ることができます。

発見されたセキュリティの問題の重大性によって、将来のリリースの中で修正されるか (非常に小さな問題の場合)、もしくはバグ修正版リリースが作成されることになります。後者の場合、ユーザーにはアップデートの確認機構を通して通知されます。

古いバージョンの DokuWiki に対してはセキュリティ問題の修正が一切リリースされないため、常に最も新しいバージョンの DokuWiki を利用するべきです。

Web アクセスのセキュリティ

DokuWiki は、設定データとページデータをファイルに保管します。これらのファイルは、絶対に Web から直接アクセスできてはいけません。DokuWiki の配布用 tar ボールには、通常 Apache Web サーバに対して特定のディレクトリへのアクセス拒否を指示するための .htaccess ファイル一式が含まれています。

もし Apache Web サーバを使用していない場合、もしくは Apache が .htaccess ファイルを利用しない設定となっている場合は、DokuWiki の安全を自分の手で確保する必要があります。

以下に示すディレクトリは、Web からアクセスできてはいけません

アクセス権限を調整する必要があるかどうかを確認するには、http://yourserver.example.com/dokuwiki/data/pages/wiki/dokuwiki.txt にアクセスしてみてください。この方法でファイルにアクセスできてしまうようではいけません。

もしディレクトリの安全が適切に確保されていない場合は、安全にする方法について、以下に示すサブセクションをお読みください。

Apache でのディレクトリへのアクセス拒否

最もシンプルな方法は、Apache の設定で .htaccess のサポートを有効化することです。Apache の .htaccess チュートリアルを参照してください。

IIS でのディレクトリへのアクセス拒否

IIS の設定により、上述のディレクトリへのアクセスを拒否することができます。

  1. 設定用のツールを起動します: スタート → 設定 → コントロール パネル → 管理ツール → インターネット インフォメーション サービス
  2. 保護したいディレクトリまで進みます: ローカル コンピュータ → Web サイト → 規定の Web サイト → ディレクトリへのパス
  3. フォルダを右クリックしてプロパティを選択 → ディレクトリ セキュリティ → IP アドレスとドメイン名の制限 → 編集
  4. 「規定では、すべてのコンピュータからの接続を: 拒否する」を選択します

ドキュメントルート外へのディレクトリの移動

上述のディレクトリへのアクセスを避けるための最も安全な方法は、これらのディレクトリを、Web サーバのいわゆる「ドキュメントルート」の外側に移動してしまうことです。

data ディレクトリ

  1. data ディレクトリをドキュメントルートの外側に移動してください。
  2. 新しい data ディレクトリの場所を指し示すため、設定項目: savedir を編集してください。

例えば、data ディレクトリが /home/yourname/data に移動された場合は、以下の行を conf/local.php ファイルに追加してください。

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

conf ディレクトリ

  1. conf ディレクトリ (およびその内容) をドキュメントルートの外側に移動してください。
  2. preload.php という名前のファイルを inc ディレクトリ内に作成し、新しい conf ディレクトリの位置を定義する DOKU_CONF という定数を設定してください。

例えば、conf ディレクトリが /home/yourname/conf に移動された場合は、以下の inc/preload.php ファイルを作成してください。

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

bin ディレクトリ

bin ディレクトリには、コマンドラインツールが含まれています。もしサーバのシェルにアクセスできない場合は、単純にこのディレクトリとその内容を削除することができます。アクセスできる場合は、このディレクトリをドキュメントルートの外に移動してください。追加の設定は不要です。

inc ディレクトリ

inc ディレクトリをドキュメントルートの外に移動するための簡単な方法は、現在のところありません。しかし、このディレクトリには注意を払うべき情報が一切含まれていないため、なんとしてでも移動しようと努力する価値はありません。

DokuWiki の設定

DokuWiki には、インストールされた DokuWiki の様々なセキュリティ面に影響を与えるいくつかの設定項目があります。それぞれの設定項目が何を行うためのもので、推奨される設定がどのようなものであるかを知るには、以下のページを参照してください。

プラグインのセキュリティ

DokuWiki には、コミュニティから提供された多数のプラグインがあります。プラグインは、新しいコードを追加することによって DokuWiki に新しい機能を追加します。これは、実質的にコードからあなたのサーバに対して任意にアクセスできるということを意味します。さらにプラグインは DokuWiki とは別に、もっぱらその場限りの方法で配布されています。それらは DokuWiki コアのコードベースが受けているような一定の注目や検査の影響下にはありません。従って、プラグインをインストールする前にはセキュリティへの警戒が必要となります。

以下に、インストールするプラグインを選ぶ際に役立ついくつかのヒントを示します。

追加の読み物

以下に、セキュリティに関する内部および外部のページをもう少し挙げておきます。