DokuWiki は Web アプリケーションであり、多くの場合インターネットから到達可能な公開サーバ上で利用されています。これは、例えばデスクトップシステム上のローカルアプリケーションに比べると、悪意のある人々から攻撃されるリスクがより大きいということを意味します。
DokuWiki はセキュリティを念頭に置いて開発されています。私たちはユーザビリティとセキュリティのバランスを取ろうと試みていますが、満足のいく妥協点が見つけられない場合はセキュリティを優先しています。
このページでは、あなたの DokuWiki が安全であることを確認するためにはどのような面に気を配らなければならないのかについて、概要を説明します。
DokuWiki にセキュリティの問題を発見した場合は、私たちにお知らせください。推奨される通知方法は以下の通りです。
非常に重大な、パッチが提供される前にバグを公開することで世界中の DokuWiki を危険にさらしてしまう可能性があるようなバグを除き、最初の 2 つの方法が推奨されます。
これまでのすべてのセキュリティの問題は、バグトラッキングシステムで見ることができます。
発見されたセキュリティの問題の重大性によって、将来のリリースの中で修正されるか (非常に小さな問題の場合)、もしくはバグ修正版リリースが作成されることになります。後者の場合、ユーザーにはアップデートの確認機構を通して通知されます。
古いバージョンの DokuWiki に対してはセキュリティ問題の修正が一切リリースされないため、常に最も新しいバージョンの DokuWiki を利用するべきです。
DokuWiki は、設定データとページデータをファイルに保管します。これらのファイルは、絶対に Web から直接アクセスできてはいけません。DokuWiki の配布用 tar ボールには、通常 Apache Web サーバに対して特定のディレクトリへのアクセス拒否を指示するための .htaccess ファイル一式が含まれています。
もし Apache Web サーバを使用していない場合、もしくは Apache が .htaccess ファイルを利用しない設定となっている場合は、DokuWiki の安全を自分の手で確保する必要があります。
以下に示すディレクトリは、Web からアクセスできてはいけません。
dataconfbininc (アクセスできても危険ではありませんが)
アクセス権限を調整する必要があるかどうかを確認するには、http://yourserver.example.com/dokuwiki/data/pages/wiki/dokuwiki.txt にアクセスしてみてください。この方法でファイルにアクセスできてしまうようではいけません。
もしディレクトリの安全が適切に確保されていない場合は、安全にする方法について、以下に示すサブセクションをお読みください。
最もシンプルな方法は、Apache の設定で .htaccess のサポートを有効化することです。Apache の .htaccess チュートリアルを参照してください。
IIS の設定により、上述のディレクトリへのアクセスを拒否することができます。
上述のディレクトリへのアクセスを避けるための最も安全な方法は、これらのディレクトリを、Web サーバのいわゆる「ドキュメントルート」の外側に移動してしまうことです。
data ディレクトリをドキュメントルートの外側に移動してください。data ディレクトリの場所を指し示すため、設定項目: savedir を編集してください。
例えば、data ディレクトリが /home/yourname/data に移動された場合は、以下の行を conf/local.php ファイルに追加してください。
$conf['savedir'] = '/home/yourname/data/';
conf ディレクトリ (およびその内容) をドキュメントルートの外側に移動してください。preload.php という名前のファイルを inc ディレクトリ内に作成し、新しい conf ディレクトリの位置を定義する DOKU_CONF という定数を設定してください。
例えば、conf ディレクトリが /home/yourname/conf に移動された場合は、以下の inc/preload.php ファイルを作成してください。
<?php define('DOKU_CONF','/home/yourname/conf/');
bin ディレクトリには、コマンドラインツールが含まれています。もしサーバのシェルにアクセスできない場合は、単純にこのディレクトリとその内容を削除することができます。アクセスできる場合は、このディレクトリをドキュメントルートの外に移動してください。追加の設定は不要です。
inc ディレクトリをドキュメントルートの外に移動するための簡単な方法は、現在のところありません。しかし、このディレクトリには注意を払うべき情報が一切含まれていないため、なんとしてでも移動しようと努力する価値はありません。
DokuWiki には、インストールされた DokuWiki の様々なセキュリティ面に影響を与えるいくつかの設定項目があります。それぞれの設定項目が何を行うためのもので、推奨される設定がどのようなものであるかを知るには、以下のページを参照してください。
DokuWiki には、コミュニティから提供された多数のプラグインがあります。プラグインは、新しいコードを追加することによって DokuWiki に新しい機能を追加します。これは、実質的にコードからあなたのサーバに対して任意にアクセスできるということを意味します。さらにプラグインは DokuWiki とは別に、もっぱらその場限りの方法で配布されています。それらは DokuWiki コアのコードベースが受けているような一定の注目や検査の影響下にはありません。従って、プラグインをインストールする前にはセキュリティへの警戒が必要となります。
以下に、インストールするプラグインを選ぶ際に役立ついくつかのヒントを示します。
lib ディレクトリの下にインストールされます。プラグインに何が含まれているかを精査し、必要に応じて .htaccess ファイルでアクセスを遮断してください。以下に、セキュリティに関する内部および外部のページをもう少し挙げておきます。