Где хранить конфиденциальную информацию в модуле Drupal? - PullRequest
4 голосов
/ 21 января 2011

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

Кажется, что единственное доступное хранилище находится в базе данных Drupal, что меня беспокоит, так как это означает, что если Drupal скомпрометирован, то и эта другая база данных.Файл settings.php в sites/all/default был моим вторым вариантом, но у меня проблемы с записью.Различные команды chmod в FTP и SSH для 777 и 666 не открывают файл для записи.Я также не уверен, что переменные, которые я установил, доступны где-либо еще.

Есть ли другие способы надежного хранения этой информации?

Ответы [ 3 ]

3 голосов
/ 21 января 2011

Вы на правильном пути, используя settings.php.Вы можете использовать переменную $ conf в settings.php , чтобы установить переменные, к которым вы можете обращаться в модулях, используя variable_get .

3 голосов
/ 21 января 2011

Хммм ... это похоже на то, что вы не должны делать вообще.Напишите API, который находится в удаленной базе данных, к которой у вас есть доступ.

Если вы все же настаиваете на прямом доступе к базе данных.Жесткий код хоста, имени пользователя и пароля в файле, поместите файл за пределы корневого каталога документа и включите его оттуда.Например, если корнем вашего документа (т. Е. Там, где находится файл index.php в Drupal) был / www / htdocs, поместите файл, содержащий информацию, в нечто вроде / www / secure и включите его там, где вам это нужно.Затем, если php по какой-то причине перестает работать, файл не находится в удобочитаемом для внешнего мира месте, но PHP может включать его в сайт по мере необходимости.

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

0 голосов
/ 21 января 2011

Использование файла конфигурации идеально подходит для такого типа информации. Однако делать chmod 777 или 666 - это очень плохая идея. Проблема в том, что обе эти настройки позволяют файлу ГЛОБАЛЬНО читать / записывать. Поэтому, если вы находитесь на общем хосте, другой пользователь в системе может получить доступ к вашему файлу. При установке попробуйте использовать функцию php chmod (), чтобы выполнить chmod 500 для файла. (500 должно работать в большинстве случаев, самая важная часть в том, что последнее число равно нулю).

...