<< <<<EOL ってなんですか? 質問一覧 CentOSでのPHP設定について >>

  • 0P
mysqlへアクセスするためのIDとパスワードの保存場所

はじめまして、参考書、PHPproとにらめっこしながらPHPを勉強しています。

PHPからmysqlを利用する時、IDとパスワードは、
どの参考書を見ても、直接PHPのソースコードに書いてありますが、
セキュリティ上問題ないでしょうか?
基本的にソースコードはブラウザから見れないと思いますが、
このサイトに回答されているようなProな人たちに見られてしまいそうで怖いです。。

何か良い方法はございますか?
一般的な方法でも結構です。

(こんなこと聞くこと自体セキュリティ上ナンセンスかもしれませんが・・・)

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。

コメント一覧

並び替え( ツリー順 / 投稿順[降順] / 投稿順[昇順]

Re:mysqlへアクセスするためのIDとパスワードの保存場所

phpkyuと申します。

心配なのであれば別ファイルにして非公開ディレクトリに置けばいいと思います。
または.htaccessを使うか!

別ファイルにする場合、いろいろと方法はあると思いますが、
たとえば連想配列を使って

cfg.php
  1. <?php
  2.  
  3. $db['host']       = "localhost";
  4. $db['user']       = "user";
  5. $db['pass']       = "pass";
  6. $db['dbname'] = "dbname";
  7.  
  8. ?>

mysql.php
  1. <?php
  2.  
  3. require_once('cfg.php');
  4. $dbc = mysql_connect($db['host']$db['user']$db['pass']);
  5.  
  6. ?>

やホスト等を列挙して
cfg.inc
  1. localhost
  2. user
  3. pass
  4. dbname

mysql.php
  1. <?php
  2. $fp=fopen("cfg.inc""r");
  3. $host = fgets($fp,1024);
  4. $user = fgets($fp,1024);
  5. $pass = fgets($fp,1024);
  6. $dbname = fgets($fp,1024);
  7. fclose($fp);
  8. $db=mysql_connect($host$user$pass);
  9. ?>

などでしょうか。

Re:mysqlへアクセスするためのIDとパスワードの保存場所

とてもいい質問だと思います。
ナンセンスなんてとんでもない。

結論から言えば、ブラウザから直接アクセスできるPHPファイル上に、DBのIDやパスワードを記述してはいけません。
参考書の類は、単にまとめて書いた方が読者に分かりやすいからです。
個人的にはその辺も参考書などには記述すべきだと思うのですが、まじめにやるとプログラム開発から逸脱した内容にまで踏み込むことになりそうなので二の足を踏むんでしょうか。

すでに回答がある通り、最低限はphpkyuさんの一番目の回答程度のことはやっておいてください。
二番目の回答の.incファイルの手法は、決してやってはいけません。

一番目のやり方は、うっかりソースの配置場所を間違えても、ApacheでPHPの設定を間違わない限り中身を見ることはできませんが、二番目のやり方は中身が見えてしまうからです。
セキュリティ上の脅威はヒューマンエラーや開発物のバグ、開発物が動作する環境(ApacheやPHP)のバグなどが原因として考えられますが、これらの要因が複数同時に起こらないと守るべきデータが盗まれない手法をとるべきです。

この手のセキュリティのお話はとっても難しいです。
具体的にどのような脅威があるか?をよく考え、その対策を練る必要があるからです。
セキュリティの向上は利便性や保守性の低下を招くことも多いため、セキュリティが破られた際の被害がどの程度なのかを考えてバランスを取る必要があります。
<<<EOL ってなんですか? 質問一覧 CentOSでのPHP設定について