Как мне избежать 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).

Другие вопросы по тегам