Apacheで、アクセスさせたくないファイルがある
PHPで、「データベース接続ファイル」と「main.php」があります。
main.phpからアクセスして、DBの内容を表示するページがあります。
・DB接続ファイル(database.php)
<?php
// MDB2 ライブラリの読み込み
require_once("MDB2.php");
// エラー発生時の処理
PEAR::setErrorHandling( PEAR_ERROR_CALLBACK, 'handleError' );
function handleError( $error )
{
die('エラーが発生しました。管理者までお問い合わせ下さい。');
}
// データベースへの接続
$dsn = array(
"phptype" => "mysql",
"username" => "root",
"password" => "",
"hostspec" => "localhost",
"database" => "test",
);
$mdb2 =& MDB2::connect( $dsn, $options );
// 文字コードの指定
$mdb2->setCharset( "utf8" );
?>
・main.php(DBの内容を表示)
require_once("database.php");
~処理~
質問:
当然、main.phpからアクセスして、DBの内容を表示します。
アドレスとしては、「http://localhost/main.php」とアクセスするのですが、
「http://localhost/database.php」とアクセスしてもページの遷移が可能です。
この「http://localhost/database.php」にアクセスしソースファイルを見ることが可能で
DBへの、接続ユーザー・パスワードがみられてしまうことが問題だと思っています。
この、
「一部ファイルへの直叩き」or「制限」をかけて、直接アクセスできなくなる方法を探しております。
(ただ、別のphpファイルから参照は許しておきたい。main.phpからアクセスできなくなっては意味がないの。)
アパッチでどのような設定をすればいいでしょうか。
参考になるページ等をご存知でしたら
ご教授お願いします。
お礼
KAERU_VXV様、ご回答いただきありがとうございました。 フォームやレポート等のオブジェクトを全て閉じて、最適化するという手法、私も経験があります。SendKeysステートメントを使ったりとかね。あれは無茶だと今では思いますが、そのシステム自体ではちゃんと動いてました。懐かしい。 今回、CSVを1つのワークテーブルに読み込んで、Excelオブジェクトを生成するという簡単なシステムなので、それゆえ、ユーザーに「最適化ボタンというのがあるのでこれを実行してください。でないと壊れます!」と言いたくないという思いがありまして。だったら、終了時に無意識のうちにやってくれればユーザーにとってもベストだと考えました。 とりあえず、SEと相談して、決めようと思います。仮に壊れてもデータはどうせワークデータなので、損失はないかと。ただ、MDBのファイル名が変わっちゃうだけなのでね。 それにしても皆さんも苦労されていますね。ちょっと面白かったです。ありがとうございました。