Ограничение объема записи файла с помощью сценария PHP

Я сейчас пишу сценарий PHP, который добавит блоки IP-адресов в . htaccess файл. Меня беспокоит то, что я не хочу, чтобы файл .htaccess был открыт для пользователя веб-сервера для общей записи, поскольку в этом случае любой компромисс веб-сервера позволит им записывать все, что они хотят, на .htaccess файл. Поэтому я пытаюсь найти способ ограничить сценарий PHP, чтобы он мог писать только то, что я хочу, каким-то образом.

Я думаю, что подходящим способом сделать это может быть создание сценария в другом месте, возможно, принадлежащем root, для которого установлен suid (мой веб-раздел не позволяет suid ). Затем я могу вызвать сценарий из своего PHP-сценария, и он сможет делать только то, что интерфейс этого промежуточного сценария предоставляет ему, а именно принимать параметры, необходимые для записи кода блокировки определенного IP-адреса в файл .htaccess и ничего больше.

Похоже, это лучший способ приблизиться к этому? Есть ли какой-либо другой способ лучше, или какие-либо соображения, которые я упускаю?


Мета-заметка : Я рассматривал сайт информационной безопасности или переполнение стека для этого вопроса. Если на одном из них будет лучше, пожалуйста, дайте мне знать.

0
15.03.2017, 23:54
1 ответ

Пусть PHP-скрипт записывает IP-адреса в таблицу базы данных. Отдельно, из cron, периодически выполняйте другой скрипт (рекомендация? Python), который запрашивает значения и записывает их в файл .htaccess. Затем вы можете сохранить жесткие права на файл .htaccess, например 0640, root:www-user.

Мы можем установить бит SUID для скрипта; но по умолчанию Linux корректно игнорирует его. Просто измените права доступа на что-то вроде 0700, root:root на скрипте, который запускается из cron.

Множество заданий, подобных этому, можно обрабатывать с помощью этой техники, своего рода очереди баз данных. Я использовал ее, когда веб-интерфейс был требованием проекта для управления системой. Очередь в подобных сценариях может управлять пользователями, паролями, виртуальными хостами, DNS - да что угодно.

2
28.01.2020, 02:34

Теги

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