- ベストアンサー
パスワード等が記述されているphpファイルの置き場所
すみません。unix系、php、web系 初心者です。 Mysql を利揺するのにpearで接続しています。 phpで記述している部分でdsnの部分がありますが パスワードやユーザー名、サーバー名等が平文?そのまんま記述していますが危険ですよね? そういうファイルは公開フォルダ( wwwやpublic_html )に置くべきでは無いですよね? 公開フォルダより上位に置いておけば安全ですか?(100%では無いと思いますが...) 公開フォルダと同じ並びに置く場合 その場合、パスの指定はどのように指定すれば良いでしょうか? ../../functions/ /functions/ のようでしょうか? またrequire_onceで読めるでしょうか? 申し訳ありません... 今は以下の様にしています。 /www/functions/hogehoge.phpです <?php $functions_path = '../functions/'; set_include_path(get_include_path() . PATH_SEPARATOR . $functions_path); require_once('hogehoge.php');
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
公開フォルダにおかざるを得なくて.htaccessも使えない場合の裏技 .htで始まるファイルはデフォルトで外部アクセス禁止になっていることが多いのでパスワードを書いたファイルの名前を .htpass とかにしておく方法もあります サーバ内からは require_once('.htpass'); で読めます
その他の回答 (3)
- tongoko
- ベストアンサー率87% (7/8)
>ページのソースをみてfunctionを利用している、phpファイルのアドレスが書いてあったらと思うと不安なのです。 >そのphpのpathをアンカータグで記述したファイルをどこかにアップすれば、functionのphpファイル名、pathが記述されたphpが取得出来てしまうのではな>いでしょうか?と思うのです... 要するに、例えば http://www.example.com/something.php ---- <? require_once('./function/function.php'); ... ---- http://www.example.com/function/password.php ---- <? $password = "hogehoge"; ---- というファイルが置いてあって、外部から <? require("http://www.example.com/function/password.php"); echo $password . "\n"; ?> としたら、パスワードが見えてしまうのではないか?という事を気にしていますか? somethings.php や password.php は HTMLの出力結果のみを 出力するので、こういった記述自体はおきませんが、 password.phpが、(apacheの設定ミスなどで)間違って平文で表示されてしまったら 確かにアウトです。ので、諸々考えるならば、やはり公開エリアにおかないのが 無難です。 >その場合、パスの指定はどのように指定すれば良いでしょうか? >$functions_path = '../functions/'; >set_include_path(get_include_path() . PATH_SEPARATOR . $functions_path); >require_once('hogehoge.php'); は require_once('../functions/hogehoge.php'); でよいと思います。
- tongoko
- ベストアンサー率87% (7/8)
> 公開フォルダより上位に置いておけば安全ですか? これがよいですが、 > /functions/ においておくのであれば、 /functions/index.html というファイルを作っておいて(中身は空でよいです)下さい。 HTTPサーバーの設定で、ディレクトリの中が参照されるように なっている可能性があるので。
お礼
ありがとうございます そうですよね。index.htmlは入れてあります。 ページのソースをみてfunctionを利用している、phpファイルのアドレスが書いてあったらと思うと不安なのです。 そのphpのpathをアンカータグで記述したファイルをどこかにアップすれば、functionのphpファイル名、pathが記述されたphpが取得出来てしまうのではないでしょうか?と思うのです... 間違っていたら申し訳ありません...
- yambejp
- ベストアンサー率51% (3827/7415)
万が一phpが実行形式でなくなった場合の措置であれば、 インクルードパスを公開フォルダ外におけば問題ないでしょう。 昔からCGIでcgi-binを使うのと同じような処理ですね。 実際にはクラスを使ってライブラリ化しておくと再利用性があがります。
お礼
ありがとうございます
お礼
ありがとうございます 勉強になりました 使用しているサーバーでは禁止されているか確かめてみます。