Защита пароля БД в php - PullRequest
5 голосов
/ 13 июля 2011

Я новичок в веб-разработке.Мне любопытно, как люди это делают.

Я пишу код php, который использует базу данных mysql.У меня есть пароль, жестко запрограммированный в коде на данный момент.Этот код может быть проверен всеми разработчиками, поэтому каждый имеет доступ к паролю.Кажется, очень, очень неправильно для меня.Кроме того, я могу думать о некоторых осложнениях.Я перечисляю проблемы в форме маркера -

  1. Неправильно задан пароль в жестком коде.Я не хочу, чтобы все разработчики имели доступ к нему, поскольку все они могут проверить код.

  2. Как провести различие между производственными серверами и серверами разработки / учетными данными?У меня есть один и тот же файл, содержащий учетные данные prod и dev DBКаков наилучший способ справиться с этим?

  3. Я хочу предотвратить ленивое / пьяное время, чтобы разработчики не удаляли / не удаляли таблицы и т. Д. Я, очевидно, могу иметь разный доступ к разным разработчикам.Таким образом, это решение для всего этого?

Потенциальное решение: не используйте пароль в коде.Попросите разработчиков самостоятельно добавить пароль и убедиться, что он никогда не был зарегистрирован.

Проблема с решением: утомительный процесс развертывания.Необходимо вручную добавить пароль для развертывания в производственной среде и QA и убедиться, что он может подключаться к БД каждый раз перед развертыванием.Звучит слишком больно и подвержено ошибкам.Что обычно делают люди?

Также на той же ноте (вид, связанный с вышеупомянутым вопросом)

  1. Если у вас есть 4 разработчика в команде, как вы настраиваете разработчикасреда?Все ли они используют одну и ту же БД?Если нет, то как вы создаете таблицы и заполняете таблицы тестовыми данными?Вам нужно написать код для заполнения тестовых данных?

Большое спасибо за любой ввод.

Ответы [ 3 ]

5 голосов
/ 13 июля 2011

Поместите пароль в отдельный PHP-файл, содержащий все настройки вашего приложения, и включите его в верхней части страницы.Затем этот файл можно сохранить вне контроля версий и заменять для каждого развертывания.

Убедитесь, что вы сохраняете файл config.php (или как вы его называете) также из своего корневого каталога,так что он не может быть случайно предоставлен любым пользователям вашего приложения.Кроме того, в качестве дополнительной меры предосторожности, убедитесь, что вы задали ему расширение .php, чтобы, если оно каким-то образом все еще обслуживалось, его сначала проанализировал PHP, а любую полезную информацию (надеюсь) удалили - обычная практикапо этой причине можно назвать его расширением .conf.php или .inc.php.

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

1 голос
/ 13 июля 2011

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

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

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

1 голос
/ 13 июля 2011

В описанной вами ситуации вы могли бы написать сценарий развертывания, который автоматически «заполняет» пароль в нужном месте исходного кода. Тогда ваши производственные пароли хранятся только в сценариях развертывания производственной среды. Разработчики могут добавить его в свои локальные среды вручную.

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

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