2011-08-14 10 views
5

こんにちは、私はPHPを初めて使いました。データベース接続では、パスワードを直接.phpファイル( "mysql_connect($ host、$ user、$ pass、$ db"))に入力することがわかりました。私はハッシングを使用するつもりですが、問題はユーザーがプリコンパイルされた.phpファイルをダウンロードしてソースコードを表示し、データベースパスワードを取得できるかどうかです。 "domain/home"と書いてあれば、ユーザーがディレクトリに入るのを防ぐ ありがとうございます。PHP5データベースのパスワードは盗まれる可能性がありますか?

+0

トピックオフ:mysql拡張機能は古くなっており、廃止予定です。 mysqliまたは[PDO](http://php.net/)に切り替えてください。 – outis

答えて

3

他の回答者が述べたように、通常、ユーザーはPHPコードを見ることができないため、これは問題ではありません。ただし、コードを他の人と共有する予定がある場合は、ユーザー名とパスワードを誰かに送信する前にそれを削除する手間がかかります(パスワードを忘れた場合)。

したがって、情報をファイルに入れてからPHPに読み込むことができます。たとえば、自分のホームディレクトリにmysql.iniというファイルを作成し、その中に以下の情報を入れる:

host  = "127.0.0.1" 
username = "user" 
password = "pass" 
database = "db" 

次に、このように、PHPにそれを読んで接続します

$settings = parse_ini_file('/home/mysql.ini'); 
mysql_connect($settings['host'], $settings['username'], $settings['password'], $settings['database']); 

を確認することを忘れないでくださいファイルが一般にアクセスできないWebサーバーのセクションにあることを確認します。そうしないと、ユーザーはログイン情報を読み取ることができなくなります。

3

ハッシュパスワードで接続できる場合、攻撃者はハッシュを取得して接続することもできます。あなたのデータベースにパスワードを保存していても、データを保存するときには本当に使えない場合にはベース証明書。

ほとんどの人は、メインアプリケーションファイル内のすべての資格情報でmysql_connectコールを直接呼び出すのではなく、資格情報を含むドキュメントルート外の構成ファイルを少なくともrequireにします。

config.phpのようなファイルがドキュメントルートの外側にある場合、サーバーにディレクトリトラバーサルホールが見つからない限り、config.phpはリモートからアクセスできません。

2

あなたのPHPページのソースを表示する - 任意のPHPコードを参照してください?ユーザーのブラウザに送信される前にサーバーによって実行されるべきではありません。サーバー上で何か不具合が発生し、PHPファイルが解析されない場合に備えて、ログイン情報をWebルートの下に置いておくことをお勧めします。

+0

ありがとう、あなたの答えは、彼らは非常に有用だった:) –

3

ユーザーはmod_phpを自身を通して

ないプリコンパイルされた.PHPファイルをダウンロードすることができますが、Webアプリケーション(またはWebサーバー)でのいくつかのセキュリティ上の脆弱性が存在する場合、次に誰かが確かにランダムなPHPを読むことができますファイル。攻撃者がWebサーバーに侵入する可能性がある場合、Webルートの外部に格納していてもデータベースパスワードを取得できます。

これはある日、となるはずです。そのような情報漏えいの結果を制限しようとします。接続するデータベースアカウントを制限することに重点を置いてください。 Webアプリケーションは、データベース内のすべてのテーブルに対する読み取り/書き込みアクセス権を持つデータベースアカウントに接続しないでください。 DBユーザーは、読み込みが必要なテーブルだけを読み込み、書き込みが必要なテーブルに書き込むように制限する必要があります。

セキュリティの追加レイヤーは、サイトユーザーが実行できるアクションについてデータベース自体でチェックを実行できるため、ストアドプロシージャを使用すると便利です。次に、Web DBユーザーは、プロシージャを介してデータベースと対話することができます。これにより、ランダムなデータベースクエリを発行することができたとしても、攻撃者が実行できるアクションが制限されます。

関連する問題