2013-02-19 6 views
9

데이터베이스 서버와의 연결을 위해 php 파일을 만들었습니다. 이 파일에서 나는 데이터베이스 서버의 매개 변수 호스트, 사용자 이름 및 암호와 함께 mysql_connect() 기능을 사용하고 있습니다.프로젝트에서 데이터베이스 구성 파일을 보호하는 방법은 무엇입니까?

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)에 데이터베이스 자격 증명을 넣은 다음이 파일을 스크립트 상단에 포함 할 수 있습니다.

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

원래 스크립트 같은 것을 볼 것이다 :

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

그냥 사용 복사 및 설정 파일 사양에 붙여 넣기 (날 비난 ;-))처럼

configuration.php 파일을 볼 것이다 . 변수 이름을 따옴표로 묶어야 제대로 작동합니다. – LSA

+0

'get_defined_constants()'는 악의적 인 개발자에게 쉽게 노출 될 수 있습니다. –

5

이제이 경우 사용자 이름과 비밀번호는 다른 사용자에게 표시됩니다.

소스 코드에 액세스 할 수있는 사용자 만 가능합니다. 이것은 문제가되어서는 안됩니다. 그러나 코드와 데이터베이스 자격 증명을 분리하려면 구성 파일이 웹 루트 외부에 있는지 확인하십시오.