Я хочу, чтобы config.json был быть читаемым приложением php, но не через браузер

Простите меня, если это исправительный вопрос.

Я создаю API для веб-приложения. У меня есть файл config.json для локальной конфигурации, но в настоящее время его можно вызвать напрямую через веб-браузер, если вы знаете URL-адрес.

Если я изменю разрешение на 750, php / nginx не сможет получить к нему доступ, что приведет к 500 ошибкам. Также невозможно поместить этот файл в другой каталог, который не сопоставлен со структурой каталогов в корневом веб-каталоге nginx. (Владелец config.json в настоящее время является моим пользователем Linux, но это могут быть www-данные - не уверен, что это важно)

Есть ли способ использовать владельцев / группы / разрешения linux для решения этой проблемы?

0
задан 29 October 2018 в 19:36
1 ответ

Мой 1-й вариант (при условии перемещения его за пределы корня сайта, это не вариант):

Определите блок расположения в nginx с помощью = и запретите доступ.

location = /config.json {
    deny all;
}

Запрещение доступа подтвердит существование файла. Если вы предпочитаете, вы можете использовать return 404; вместо строки deny all; и это будет выглядеть так, будто файла даже не существует.

Вы должны быть в состоянии сделать файл принадлежащим и читаемым пользователем php-fpm, но не пользователем nginx. Однако, я думаю, что это слишком легко ошибиться и слишком рискованно.

В противном случае:

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

.
2
ответ дан 4 December 2019 в 13:23

Теги

Похожие вопросы