2012-01-21 16 views
2

まあ、私は次のPHPコードでデータベース接続を作成しています:PHPのデータベース接続のセキュリティ・チェック

<?php 
define('DB_HOST', 'localhost'); 
define('DB_USER', 'root'); 
define('DB_PASSWORD', ''); 
define('DB_DATABASE', 'evantechbd'); 

$db = mysql_connect(DB_HOST, DB_USER); 
if (!$db) 
{ 
die('Could not connect to Server: ' . mysql_error()); 
} 
if (!mysql_select_db("evantechbd",$db)) 
{ 
die('Could not connect to DataBase : ' . mysql_error()); 
} 
?> 

はそれが本当に安全ですか?

+2

これは*安全ではないと心配している具体的な理由はありますか?また、 'mysql_ *'関数は廃止予定です。 – ceejayoz

+0

最新の機能とは何ですか? – user1161867

+0

[PDO](http://www.php.net/manual/en/intro.pdo.php)は良い選択です。 – ceejayoz

答えて

1

何かに対して安全ですか?

「粗いモジュール」に対して安全にしたい場合は、そうではありません。すべての定義済みの値は、インクルードされたファイルのどこにでもアクセスできます(configを使用し、初期化を解除する必要があります)。

​​

ウェブユーザーに対しては?再びいいえ。エンドユーザーにエラーが表示されています。何らかの理由で接続が失敗した場合は、localhostに接続していることを誰にでも伝えています(例外をスローし、エラーをトリガし、データベースエラーについてユーザーに通知し、自分宛にメールを送信してエラーを記録する必要があります)。

パスワードを使用しないでrootを使用することは、大きなセキュリティ上の問題ですが、私はそれが単なるデータの例であると仮定しています。

+0

+1。また、プロダクションコードでrootユーザーを使用することは良い考えでもありません。サーバー上の各アプリケーションごとに特定のユーザーを作成する必要があります。そのため、データベース情報が侵害される場合は、1つのサイトのみが影響を受けます。 – kba

+0

例を挙げてください。 – user1161867

+0

@KristianAntonsenええ、そうです。私たちはmysqlサーバ上のlocalhostからの接続のみを許可していますが、これはセキュリティが大変ですが、悪用されるアプリケーション(phpMyAdminなど)があります。私は 'web_ae79ec'(接尾辞としてランダムなハッシュ)と長いパスワード(約8〜20文字)のような名前のユーザーを好む。 – Vyktor

2

セキュリティ上の最大の問題は、rootデータベースユーザーが実際にパスワードを取得する必要があることです。

+0

さて、私はlocalhostサーバーでテストしています。私はそれをサーバーにアップロードするときにこれを変更する必要があります。しかしそれは安全ですか? – user1161867

+0

「安全」を定義します。あなたは何を守ろうとしていますか?コードの他の部分が問題になる可能性が高くなります。 – ceejayoz

+0

ハッキングに守る..問題は何ですか? – user1161867

関連する問題