2013-02-19 3 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_user и mysql.default_password. В каком сценарии мы имеем дело с этим?

Или как я могу защитить свои ценности от других?

ответ

9

Вы можете попытаться поместить учетные данные своей базы данных в отдельный файл с соответствующими наборами разрешений UNIX, например 644, а затем включить этот файл поверх своего сценария.

Файл configuration.php будет выглядеть следующим образом:

<?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

Просто использованную копию и вставьте в вашей спецификации файла конфигурации (вините меня ;-)) , Пришлось добавлять кавычки вокруг имен переменных, чтобы заставить их работать. – LSA

+0

'get_defined_constants()' может легко разоблачить их злобным разработчикам. –

5

Теперь в этом случае имя пользователя и пароль видны другим.

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