Является ли хранение конфигурационных переменных в XML-файле на PHP-сайте в корневом каталоге сайта слишком рискованным?

StackOverflow https://stackoverflow.com/questions/605308

  •  03-07-2019
  •  | 
  •  

Вопрос

Я заметил, что Magento хранит сведения о подключении к MySQL в XML-файле, который не защищен над docroot.Это кажется....ну, в общем, опасно.

XML кажется удобным способом хранения конфигурационных данных, за исключением одной вещи - ввода http://www.domain.com.au/library/config.xml покажу миру ваши личные данные!

Я пошел дальше и использовал XML-файл и добавил это в свой файл .htaccess.

<Files ~ "\.xml$"> // regex files that end with xml extension
Order allow,deny 
Deny from all // don't show them
</Files>

Теперь я был доволен этим, но теперь я не слишком уверен.Что делать, если файл .htaccess случайно удален / поврежден (происходит ли это помимо человеческой ошибки), и что, если однажды я захочу разместить приложение на сервере, отличном от apache...есть ли у каждого сервера эквивалент для блокировки XML-файлов, и если есть, могут ли они быть изменены на уровне папки, например .htaccess can (а не только файл httpd.conf).

Мой вопрос таков...перевешивает ли удобство XML (простота обновления, дизайнеры, которым нужно повозиться, не будут чувствовать себя так запуганно) потенциальные проблемы (раскрытие личных данных)?

Это было полезно?

Решение

Лично я бы хранил информацию о файле конфигурации только в формате, который не находится в непосредственно доступном формате или местоположении.Поэтому я бы либо использовал формат XML над docroot, либо использовал формат PHP $config['varname'] = 'value'.Более поздний метод просто отобразил бы пустую белую страницу, если бы был вызван напрямую (при условии, что это все PHP, не содержит HTML и не выдает эхо).

Gallery, vBulletin и Joomla используют второй метод, о котором я упоминал.Я знаю, что упоминал эти проекты ранее в других вопросах, связанных с PHP, но, похоже, это метод, который широко используется и принят между проектами.

Другие советы

Короткий ответ: нет, это не так.Но лучшим вопросом было бы следующее.Если он не сохранен в конфигурационном файле, где бы вы его сохранили?

Я полностью согласен с inventix в этом, но также предлагаю третий вариант, который следует комбинировать с любым из них

назовите файл, в котором хранится информация о конфигурации

.htanything.неважно

поскольку на сервере все файлы, начинающиеся с .ht, нечитаемы внешними пользователями {вот почему htaccess всегда .htaccess}

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top