Я хотел бы сохранить все параметры конфигурации для веб-приложения в одном файле. (пути, пароли, опции, которые читаются php, sass (во время компиляции), может быть, хрюкать, ..)
Мне нравится формат JSON, потому что он очень чистый, и почти все может анализировать JSON. Но по умолчанию .json файлы могут быть загружены.
Могу ли я безопасно предотвратить это, дав файлу .json.php
расширение?
Какие недостатки? Лучшие подходы?
Чтобы предотвратить загрузку файла, обычно нужно сохранить его в каталоге, который не обслуживается веб-сервером. Я не знаю, в какой настройке вы находитесь, но при условии установки Apache, если, например, ваш .php
файлы обслуживаются из каталога /home/user/htdocs
, вы можете создать каталог /home/user/config
убедитесь, что он доступен для чтения веб-сервером, и сохраните .json
файлы там.
Другой подход, опять-таки при условии, что Apache, будет создавать .htaccess
файл, содержащий следующее (вдохновлено этот ответ):
RedirectMatch 404 \.json$
Это не только предотвратит загрузку любого и всех .json
файлы в каталоге, но скрывают само их существование.
Это может просто можно сделать так, как вы предложили, сохраняя файл с .json.php
расширение, хотя это не будет рекомендуемым подходом. Чтобы это работало, файл должен быть действительным PHP, но он также должен быть действительным JSON, и нам несколько мешает тот факт, что JSON не допускает комментарии. Что-то вроде следующего остановит интерпретатор PHP вскоре после запуска файла, прежде чем раскрыть ваши секреты:
{
"<?php exit('Access denied'); ?>": null,
"password": "secret"}
Других решений пока нет …