Рекомендации по учетным данным / переменным хостов MySQL - PullRequest
25 голосов
/ 19 октября 2011

Я хочу знать, что является наилучшей практикой или что рекомендуется делать при создании переменных для учетных данных MySQL / хоста.

    define('HOST', 'localhost');
    // etc..
   mysql_connect(HOST, // etc...

против

    $host = 'localhost';
    // etc..
   mysql_connect($host, // etc...

Для обоих вы можете легко проверить, какие объявлены переменные или константы, и, возможно, легко найти, что это за значение. У меня есть код, которым могут поделиться и использовать несколько пользователей.

Как лучше защитить эти переменные?

Ответы [ 2 ]

31 голосов
/ 21 октября 2011

Вот несколько решений

1) Вы даете каждому пользователю свой пароль и пароль, и каждый пользователь имеет свои разрешения в базе данных (только выберите или вставьте и т. Д.).Итак, в ваш код вы просто включаете db.config.php, чтобы все переменные были установлены.На самом деле не имеет значения, если пользователь выводит переменные, поскольку они используют свои собственные.

2) вы можете дать общее имя пользователя / пароль для базы данных и затем кодировать файл (либо используя пользовательская кодировка , zend optimizer или ioncube и сбросьте переменные. Вот пример кода:

// file mysql_connect.php

$link = mysql_connect("localhost", "mysql_user", "mysql_password")
    or die("cannot connect to database : " . mysql_error());

// then this file is encoded so nobody can view it.

3) В какой-то момент кто-то каким-то образом сможет найти эту информацию.Я бы просто рекомендовал доверять вашему пользователю (при условии, что это разработчики)

1 голос
/ 19 октября 2011

В какой-то момент в вашем коде вам придется жестко закодировать такую ​​информацию, важно сохранить ее только в одном месте, чтобы обеспечить возможность обслуживания. Однако, поскольку вы беспокоитесь о безопасности, я предлагаю вам проверить это: Конвертировать файл PHP в двоичный файл

...