Какой лучший способ защитить строку подключения к базе данных? - PullRequest
10 голосов
/ 02 декабря 2008

Я пишу набор приложений на основе баз данных на PHP. Эти приложения будут работать на сервере Linux как его собственный пользователь. Время от времени другие пользователи, вероятно, будут в системе, но имеют очень контролируемый доступ К другим серверам они вообще не будут иметь доступа. Я также представлю API-интерфейс хранимых процедур для разработчиков, которым необходимо писать сценарии Perl, которые обращаются к базе данных с помощью DBI и набора функций, которые я пишу.

Мой вопрос: как лучше защитить файлы конфигурации, в которых есть строки подключения?

Достаточно ли другого пользователя с правами [4+] 00 для файла? Должен ли я зашифровать их? Кажется, это просто переместило проблему в другое место, так что я беспокоюсь о том, где хранить ключ шифрования. Я понимаю, что разработчикам Perl нужно будет иметь собственную строку подключения, поскольку они будут иметь только разрешения на выполнение базы данных.

Ответы [ 3 ]

7 голосов
/ 02 декабря 2008

Если машина на самом деле администрируется в традиционном Unix-режиме, где J. Случайный пользователь не имеет права рутироваться постоянно, я бы сказал, что разрешения на файловую систему - ваш лучший выбор. Если кто-то получает несанкционированный root-доступ, никакая глупость шифрования не будет «защищать» строку подключения.

Я бы пометил файлы со строкой подключения как принадлежащие "пользователю скрипта" и дал бы им доступ, как вы описываете.

(Браво за то, что вы понимаете, что шифрование строки подключения ничего не дает, в этом примере. Безопасность через неизвестность контрпродуктивна.)

2 голосов
/ 02 декабря 2008

Вот ссылка на бесплатный модуль Apache, который помогает управлять доступом к хранилищу паролей:

http://uranus.it.swin.edu.au/~jn/linux/php/passwords.htm

Это кажется мне немного сложным, и требует, чтобы вы запустили PHP под mod_php. И все же это не учитывает вероятность того, что посторонние люди, имеющие доступ к серверу, смогут просто прочитать ваш файл паролей.

Я думаю, что вы должны полагаться на права доступа к файлам и полагать, что неавторизованные люди не смогут sudo получить UID вашего PHP-приложения или получить root-права.

0 голосов
/ 02 декабря 2008

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

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

...