プロが教える店舗&オフィスのセキュリティ対策術

すみません。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');

A 回答 (4件)

>ページのソースをみて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');

でよいと思います。
    • good
    • 0

公開フォルダにおかざるを得なくて.htaccessも使えない場合の裏技


.htで始まるファイルはデフォルトで外部アクセス禁止になっていることが多いのでパスワードを書いたファイルの名前を
.htpass
とかにしておく方法もあります
サーバ内からは
require_once('.htpass');
で読めます
    • good
    • 0
この回答へのお礼

ありがとうございます
勉強になりました
使用しているサーバーでは禁止されているか確かめてみます。

お礼日時:2009/05/27 16:51

> 公開フォルダより上位に置いておけば安全ですか?



これがよいですが、

> /functions/

においておくのであれば、

/functions/index.html

というファイルを作っておいて(中身は空でよいです)下さい。

HTTPサーバーの設定で、ディレクトリの中が参照されるように
なっている可能性があるので。
    • good
    • 0
この回答へのお礼

ありがとうございます
そうですよね。index.htmlは入れてあります。
ページのソースをみてfunctionを利用している、phpファイルのアドレスが書いてあったらと思うと不安なのです。
そのphpのpathをアンカータグで記述したファイルをどこかにアップすれば、functionのphpファイル名、pathが記述されたphpが取得出来てしまうのではないでしょうか?と思うのです...
間違っていたら申し訳ありません...

お礼日時:2009/05/27 16:49

万が一phpが実行形式でなくなった場合の措置であれば、


インクルードパスを公開フォルダ外におけば問題ないでしょう。
昔からCGIでcgi-binを使うのと同じような処理ですね。

実際にはクラスを使ってライブラリ化しておくと再利用性があがります。
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2009/05/27 16:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!