Как мне избежать php от перехода в определенный каталог?
Не так давно я перешел на выделенный сервер и приказал сделать его более экономичным для себя. Я решил арендовать некоторое место на сервере у знакомых (друзей, семьи). У некоторых людей, которых я знаю, есть какой-то другой парень, который отвечает за разработку сайта, и я хочу защитить себя от несанкционированного доступа к моему или любому другому парню, у которого я арендовал.
Один из случаев, который меня беспокоит больше всего, - это получение PHP доступа к другим пользователям или ко мне путем доступа ../
от их корня.
Например, они могли бы сделать что-то вроде этого: foreach(glob('../*/*.*') as $some_file){unlink($some_file);}
который удалил бы все файлы от родного пользователя.
Как мне избежать, чтобы люди делали подобные вещи?
2 ответа
Это звучит как проблема, которая может быть решена с помощью системного администрирования.
- Отредактируйте ваш файл php.ini, ограничив значения в open_basedir
- Убедитесь, что ваши пользователи назначены в разные группы
- chmod ваши домашние каталоги og-wx (например, 744, 740, 700 и т. д.)
- Запускать несколько экземпляров сервера Apache, возможно, под разными пользователями / группами
Это действительно зависит от того, сколько усилий вы хотите приложить к этому и насколько надежной должна быть безопасность.
http://www.php.net/manual/en/ini.core.php http://wiki.apache.org/httpd/RunningMultipleApacheInstances
Вы должны рассмотреть сообщение dctrucker о разрешениях и убедиться, что процесс apache, если вы запускаете php с mod_php, или процесс php, если вы запускаете его на fast-cgi, не имеют разрешений на изменение разрешений. Я бы не советовал подход base_opendir, если безопасность вас интересует, потому что тогда можно просто использовать ini_set для его переопределения (поэтому, если вы используете этот подход, вы должны также отключить ini_set).