2013-02-19 15 views
9

データベースサーバーとの接続を確立するためにphpファイル上に作成しました。このファイルでは、mysql_connect()関数をデータベースサーバーのパラメータhost、username、およびpasswordとともに使用しています。プロジェクトでデータベース構成ファイルを保護する方法は?

public class DatabaseConnect 
{ 
function __construct() 
{ 
    mysql_connect('localhost','username','password') or die('Could not connect to mysql server.'); 
    mysql_select_db('databasename'); 
} 

} 

この場合、ユーザー名とパスワードは他人に見えるようになります。

さらに値{mysql.default_usermysql.default_password}を確保する方法が見つかりました。このシナリオではどのようなシナリオが必要ですか?

他の人から自分の価値をどのように確保できますか?

答えて

9

適切なUNIXアクセス許可セット(たとえば644)を使用してデータベース資格情報を別のファイルに格納し、このファイルをスクリプトの上に含めることができます。 (;-)私を責め)

require ("configuration.php"); 
public class DatabaseConnect 
{ 
function __construct() 
{ 
    mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die('Could not connect to MySQL server.'); 
    mysql_select_db(DB_DATABASE); 
} 

} 
+0

configファイルの仕様上だけで使用、コピー&ペースト:あなたのオリジナルのスクリプトは次のようになります

<?php define (DB_USER, "mysql_user"); define (DB_PASSWORD, "mysql_password"); define (DB_DATABASE, "database_name"); define (DB_HOST, "localhost"); ?> 

configuration.phpファイルは次のようになります。変数名の前後に引用符を追加して動作させる必要がありました。 – LSA

+0

'get_defined_constants()'は簡単に悪意のある開発者にそれらを公開することができます。 –

5

この場合、ユーザー名とパスワードは他人に見えるようになります。

ソースコードにアクセスできるユーザーのみ。これは問題ではありません。ただし、コードとデータベースの資格情報を分離する場合は、設定ファイルがWebルートの外側にあることを確認してください。

関連する問題