запись php-скриптов в файлы, не предназначенные для записи в мире
-
09-06-2019 - |
Вопрос
Как можно разрешить PHP-сценарию записывать в файл с ограничениями высокой степени безопасности, например разрешать запись в него только одному пользователю?
Сложность заключается в том, что скрипт PHP работает как пользователь с низким уровнем разрешений (может быть, apache, или www, или никто?), и даже если я chown
apache the_writable_file, каталог это в может быть недоступно для записи для пользователя низкого уровня. В целом, как обычно PHP может работать с локальными файлами безопасным способом?
Решение
К сожалению, на общих хостах, которые используют mod_php, нет способа ограничить доступ для защиты файлов для вашего веб-приложения и входа в систему пользователя.
Решение состоит в том, чтобы запустить ваше веб-приложение от имени пользователя для входа . Когда вы сделаете это, права доступа к файлам UNIX могут правильно заблокировать всех остальных. Есть несколько способов реализовать это, в том числе SuExec , suPHP или запуск PHP с FastCGI с mod_fcgid или mod_proxy_fcgid . FastCGI - мой любимый способ.
Другое решение - использовать выделенный хост или виртуальный частный сервер.
Другие советы
Конечно, chgrp apache the_writable_file
и chmod g + w the_writable_file
. После этого только ваш защищенный пользователь и пользователь apache смогут писать в файл. Поскольку пользователю apache, как правило, запрещен вход в систему, вам нужно беспокоиться только о том, чтобы веб-пользователи записывали в ваш защищенный файл с помощью демона http.
Все содержащие папки должны иметь разрешения на выполнение.
Например, если файл находится в / foo / bar / the_writable_file
, каталоги " foo " и "бар" оба должны иметь разрешение на выполнение для доступа к the_writable_file, даже если у них нет разрешения на чтение / запись.