Как хранить учетные данные базы данных в типичной сборке CMS на PHP? - PullRequest
1 голос
/ 03 апреля 2009

Как лучше хранить учетные данные в CMS? Теперь я объявляю их в моем классе базы данных singleton:

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

Но не так интуитивно искать, где их изменить, а также я планирую сделать установочный файл для cms позже.

Где и как вы храните настройки подключения?

Ответы [ 3 ]

1 голос
/ 03 апреля 2009

Как правило, я не помещаю учетные данные непосредственно в исходный код, а храню их в файлах конфигурации. Это значительно упрощает их изменение, например, когда вы переходите с компьютера разработчика на тестовый компьютер, который может (должен) подключаться к другой базе данных.

Этот файл конфигурации должен храниться где-то за пределами каталога webroot.

Вы также можете каким-то образом зашифровать пароль, чтобы иметь немного больше безопасности в случае, если файл конфигурации будет взломан. С другой стороны, если кто-то получает физический доступ к вашему серверу, вы все равно облажались, так что это может не стоить этого.

1 голос
/ 04 апреля 2009

Вы можете использовать одноэлементный класс, как вы упомянули, или что-то более простое.

Во всех моих файлах config.inc.php у меня есть стандартный ассоциативный массив

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

Концепция та же самая, и вы на правильном пути. Сделайте это тем, что, как человек, имеет для вас смысл. Если кто-то имеет доступ к вашему серверу, вы все равно облажались, так что это не имеет большого значения с точки зрения безопасности.

Что касается установочного файла, я видел, как многие приложения открывали конфигурационный файл, корректировали несколько определенных частей с помощью кода и затем фактически перезаписывали файл обратно на сервер (вместо того, чтобы «сохранять настройки»). Он достигает того же результата, но выполняется с помощью мастера, а не вручную.

1 голос
/ 03 апреля 2009

CakePHP использует файл конфигурации с именем database.php (в / app / config /), в котором объявлен класс DATABASE_CONFIG:

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' => '',
    );
}

Это создает единственное место, где пользователь может установить все свои конфигурации базы данных, в то время как интуитивно понятная структура каталогов делает очевидным, где хранятся конфигурации базы данных. Кроме того, вы можете указать несколько конфигураций для целей производства, разработки и тестирования, с которыми легко переключаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...