last-modified: 2010-01-03 (日) 10:58:57 (244d)[変更箇所]
Webサーバ上にあって、Webブラウザから実行されるPHPプログラムは、サーバ上で何のアクセス制御もしていない場合は、
通常DocumentRoot?以下の「.php」ファイルすべてが対象となります。
Webアプリケーションの規模が拡大し、PHPファイルの数が増加すると、Webサーバへの入り口(アクセスポイント)が増えるために、
サーバへのアクセスが統制できなくなり、セキュリティ的にもリスクが高くなります。
そのため、クライアントからアクセスできるアクセスポイントは必要最小限まで減らし、Webブラウザからのアクセスは
限定したアクセスポイントを必ず通るようにして、その部分のみを集中して管理する仕組みが必要になります。
Magic3フレームワークでは、「include」という直接アクセス不可のディレクトリ領域を設けて、システムの機能本体は
その「include」ディレクト以下に作成し、Webブラウザからアクセスする場合は、用途別のアクセスポイントを必ず経由してから
「include」以下のサーバ機能本体を実行する仕組みになっています。
アクセスポイントは用途別に以下の通りです。
プログラムの内容はすべて同一で以下のようなものです。
一旦、起動マネージャー(LaunchManager?)に処理を渡して、起動マネージャーが「include」以下の本体プログラムを実行します。
// 定義ファイル読み込み require_once(dirname(__FILE__) . '/include/global.php'); // プログラム実行 $gLaunchManager->go();
この仕組みでは、起動マネージャーですべてアクセスを集中管理できます。
また、サーバへのアクセスの停止、再開は単にアクセスポイントファイルの削除、再生だけで行えます。
「include」ディレクトリ以下のphpプログラムは何も設定しない場合だとクライアントから実行されてしまうので、
Apacheの設定で「include」という名前のディレクトリにアクセスできないようにするか、または以下のように、
「include」ファイル以下のphpファイルの先頭にプログラムを追加しておきます。
// 直接アクセスの防止
defined('M3_SYSTEM') or die('Access error: Direct access denied.');
