2009-04-03 4 views
1

CMS에 데이터베이스 자격 증명을 저장하는 가장 좋은 방법은 무엇입니까?PHP의 일반적인 CMS 빌드에 데이터베이스 자격 증명을 저장하려면 어떻게합니까?

$this->credentials = array("hostname"=>"hostname", "username"=>"username","password"=>"password", "database"=>"database"); 

을하지만 어디를 변경하는 검색 할 수 있도록 직관적 아니라도 나중에 CMS를위한 파일을 설치 할 계획입니다 : 지금은 내 데이터베이스 단일 클래스를 선언합니다.

어디에서 어떻게 연결 기본 설정을 저장합니까? 이것은 한 곳에서 생성

class DATABASE_CONFIG { 

    var $default = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => 'localhost', 
     'login' => 'user', 
     'password' => 'password', 
     'database' => 'database_name', 
     'prefix' => '', 
    ); 

    var $test = array(
     'driver' => 'mysql', 
     'persistent' => false, 
     'host' => 'localhost', 
     'login' => 'user', 
     'password' => 'password', 
     'database' => 'test_database_name', 
     'prefix' => '', 
    ); 
} 

경우 사용자가 모든 데이터베이스를 설정할 수 있습니다

답변

1

앞서 언급 한 것처럼 싱글 톤 클래스를 사용할 수 있습니다. 내 모든 config.inc.php를 파일에서

나는 표준 연관 배열

$config['Main_Database'] = ''; 
$config['db_user'] = ''; 
$config['db_pass'] = ''; 
$config['db_host'] = ''; 

개념은 동일을 가지고 올바른 방향으로 가고있는 것입니다. 인간으로서 당신에게 의미있는 것을 만들어보십시오. 누군가가 귀하의 서버에 액세스 할 수 있다면 어쨌든 당신의 실수로 더 안전하다는 측면에서 큰 문제가되지 않습니다.

설치 파일의 경우 많은 응용 프로그램이 구성 파일을 열고 코드를 통해 특정 부분을 조정 한 다음 실제로 파일을 다시 서버에 저장합니다 ("설정 저장"대신). . 동일한 결과를 얻지 만 마법사를 통해 수동으로 수행됩니다.

+0

나는 그 접근법을 좋아한다. 고마워. –

1

CakePHP의는 DATABASE_CONFIG 클래스가 선언 된 (/ 응용 프로그램/설정/년) database.php라는 설정 파일을 사용하여 직관적 인 디렉토리 구조는 데이터베이스 구성이 저장되는 위치를 명확하게합니다. 또한 생산, 개발 및 테스트 목적으로 여러 구성을 지정할 수 있으며 전환하기 쉽습니다.

+0

이러한 구성 정보를 저장하는 일반적인 방법입니다. 때로는 .ini 또는 XML 형식이 대신 사용되지만 아이디어는 같습니다. – Kalium

+0

하나의 메모 : .ini /.xml을 사용하는 경우 .htaccess를 사용하여 액세스를 차단해야합니다. 그렇지 않으면 모든 사용자가 .htaccess를 볼 수 있습니다. – Alekc

+0

네, 루트에 xml과 ini 파일을 두지 않을 것입니다 - 나는 여전히 config.php.mycustomextension이나 config.php보다는 xml이나 ini 또는 txt를 선호합니다 - htaccess에도 불구하고 - 나는 결코 그것을 신뢰하지 않습니다. – TheBlackBenzKid

1

일반적으로 자격 증명을 소스 코드에 직접 넣지는 않지만 구성 파일에 저장합니다. 예를 들어 개발 시스템에서 테스트 시스템으로 이동할 때와 같이 다른 데이터베이스에 연결해야하는 경우와 같이 변경하기가 훨씬 쉽습니다.

이 구성 파일은 webroot 디렉토리 외부에 저장해야합니다.

또한 암호를 암호화하여 구성 파일이 손상되는 경우를 대비해 보안을 강화할 수 있습니다. 다른 한편으로 누군가가 서버에 실제로 액세스 할 수 있다면 어쨌든 망쳐 버릴 수 있으므로 가치가 없을 수도 있습니다.