Простите меня, если это исправительный вопрос.
Я создаю API для веб-приложения. У меня есть файл config.json для локальной конфигурации, но в настоящее время его можно вызвать напрямую через веб-браузер, если вы знаете URL-адрес.
Если я изменю разрешение на 750, php / nginx не сможет получить к нему доступ, что приведет к 500 ошибкам. Также невозможно поместить этот файл в другой каталог, который не сопоставлен со структурой каталогов в корневом веб-каталоге nginx. (Владелец config.json в настоящее время является моим пользователем Linux, но это могут быть www-данные - не уверен, что это важно)
Есть ли способ использовать владельцев / группы / разрешения linux для решения этой проблемы?
Мой 1-й вариант (при условии перемещения его за пределы корня сайта, это не вариант):
Определите блок расположения в nginx с помощью =
и запретите доступ.
location = /config.json {
deny all;
}
Запрещение доступа подтвердит существование файла. Если вы предпочитаете, вы можете использовать return 404;
вместо строки deny all;
и это будет выглядеть так, будто файла даже не существует.
Вы должны быть в состоянии сделать файл принадлежащим и читаемым пользователем php-fpm, но не пользователем nginx. Однако, я думаю, что это слишком легко ошибиться и слишком рискованно.
В противном случае:
Вот почему многие php приложения делают свои конфигурационные файлы php. Если бы браузер их запрашивал, то они собирали бы какой-нибудь массив конфигураций и выходили бы, ничего не выводя. Также часто бывает так, что внутри конфигурационного файла проверяется какая-то глобальная переменная и выходит беззвучно, ничего не возвращая.
.