mysqlへアクセスするためのIDとパスワードの保存場所 - PHPプロ!Q&A掲示板

1799

  • 0P

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

質問日時 / 2009年1月19日 19:22    回答数 / 2件

Questioner:  koichiphp  このエントリーをはてなブックマークに追加 

キーワード / mysql    パスワード    php   

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

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

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

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

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



ツリー一覧

┣A01phpkyuphpkyuと申します。 心配なのであれば別ファイルに
┗A02Kanonbellとてもいい質問だと思います。 ナンセンスなんてとん

回答一覧

並び替え:

A01
answererphpkyu [1月19日 23:08]

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. ?>

などでしょうか。

この意見に回答する

ツリーへ TOPへ

A02
answererKanonbell [2月3日 21:13]

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

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

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

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

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

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)