解決済みの質問
PHP初心者です。
現在、winxp pro sp2でapache2.0.54とPHP4でサイトを作っているのですが、PHPファイルの基本的な階層構造(ファイルの置き方)やこうした方が良いという方法はありませんでしょうか?
例)
htdocs(DocumentRoot)
┣proc
┃┗regist_check.php(登録内容の入力チェック用)
┣index.php
┣top.php
┣regist.php
┗.htaccess
今現在、上のような階層になっています。
「http://自分のURL/proc/」
このようにアクセスされる分にはapache側でアクセス出来ないようになっていますが、
「http://自分のURL/proc/regist_check.php」
このようにチェック用のPHP等に直接アクセスされると非常に困るのですが、こういったことを回避するにはどういう方法がよろしいでしょうか?
よろしくお願い致します。
投稿日時 - 2005-12-22 19:16:35
実際今試してみました。
実験環境は以下の通りです。
Fedoracore3 Linux
apache2.0.52
PHPのバージョンは同じく4だったと思います。
階層は以下の通り
/(ルート)
├home(ユーザー用全体ディレクトリ)
├user(ユーザーのホームディレクトリ)
│ ├public.html(webで見られるドキュメントルート)
│ │ └test.php(呼び出し側スクリプト)
│ └vars1.php(呼び出されるデータ1)
└vars2.php(呼び出されるデータ2)
(分かりにくくて申し訳ありません。)
結果から言うと私の環境下では所有者をルートでもユーザーでも
homeディレクトリ直下までは呼び出しが出来ます。
ただしドキュメントルートより上に置くことは
セキュリティの関係からもあまり賢明ではないと思われます。
もし呼び出したいPHPスクリプトがあるなら
ドキュメントルート直下に何かディレクトリを作って(./include/等)
まとめておけば良いのではないでしょうか?
また、管理者がユーザー制限を厳密にやっていれば
呼び出すことも出来ないかと思われます。
いずれにしろ、stupid_honeyさんの環境が分かりませんので
断言はできませんが可能ではあるということで宜しいでしょうか。
投稿日時 - 2005-12-22 21:10:16
お礼
お返事が遅くなりまして申し訳ありません。
色々と試したのですが、includeするものに関してはドキュメントルートより上の階層にphpスクリプトを設置しても呼び出せました。よってブラウザから直にアクセスすることは不可能になりました。
とりあえずの手段としては、スクリプトを呼び出す側で値をPOSTする際にhidden等に持たせて、呼び出される側でどこから呼ばれたのかを判断するようにしました。
投稿日時 - 2005-12-27 11:30:20
0人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
.htaccessで任意ディレクトリに直接パスワードなりIP制限なりかけるのも手ですが
折角PHPを使うのでしたらスクリプトにその機能を含ませたらどうでしょう。
参考URL:http://www.shtml.jp/htaccess/
投稿日時 - 2005-12-22 19:25:15
お礼
早速のご回答ありがとうございました。
とりあえずの対策として、.htaccessでアクセスされたくないディレクトリは認証制限を設けました。
あと、PHPファイル自体をドキュメントルートより上の階層に置いてrequire等で呼び出すことはできるのでしょうか?
投稿日時 - 2005-12-22 20:13:42