Может ли PHP перемещаться и редактировать корневые системные файлы на сервере? - PullRequest
4 голосов
/ 05 января 2012

это может показаться глупым вопросом, но я гуглил безрезультатно.

Я всегда думал о PHP как о языке для создания динамических сайтов, управляемых базой данных, и я никогда не думал о том, чтобы использовать его для перемещения системных файлов на реальном сервере (поскольку у меня никогда не было необходимости). Мой вопрос:

  1. Может ли стандартная установка PHP 5.3.x.x перемещать, копировать или редактировать системные файлы (в качестве примера я использую сервер Linux) в / bin или, может быть, / etc?
  2. это хорошая идея / практика?

Мне никогда не приходило в голову, что, если злонамеренный хакер сможет внедрить какой-либо PHP в сайт, ему будет фактически предоставлен доступ ко всему серверу Linux (и всем его системным файлам). Я только когда-либо думал о PHP как о чем-то, что работает в каталоге / vhosts (возможно, наивно).

Извините, если это звучит как глупый вопрос, но я не могу проверить свою теорию так, как если бы мой начальник видел, как я пишу / загружаю / выполняю скрипт, который перемещал вещи в файловой системе Linux, я был бы мертв.

Спасибо за вашу помощь, ребята! :)

Ответы [ 3 ]

3 голосов
/ 05 января 2012

PHP может на ваш сервер независимо от того, какие разрешения учетной записи пользователя он запускает.PHP как язык никоим образом не ограничен (по крайней мере, с точки зрения разрешений), это ограничено учетной записью пользователя.

Вот почему люди обычно создают пользователя для веб-сервера Apache / nginx / insert, чтобы он работал здесь, и дают ему только разрешения на манипулирование файлами и каталогами, связанными с веб-сервером.Если вы не дадите этому пользователю права доступа к /bin или /etc, он не сможет сделать ничего, что повлияет на них.

это хорошая идея / практика?

Обычно нет.Оставьте системное администрирование своему системному администратору, а не пользователю, запрашивающему ваши PHP-скрипты.

1 голос
/ 05 января 2012

PHP может пытаться вызывать многие системные команды для перемещения или непосредственного редактирования файлов на жестком диске. Успех этого зависит от настроек безопасности.

Давайте предположим, что ваш PHP работает через apache, и apache настроен на запуск всех процессов как пользовательские данные www - настройка по умолчанию для ОС, подобных Debian. Если вы даете пользователю разрешение www-data на редактирование / etc, тогда да, PHP может читать и записывать файлы в / etc

Есть только один существенный недостаток, как вы определили; охрана, безопасность и охрана. Вы также должны быть уверены, что ваш PHP работает правильно, так как 1 неправильно написанный файл теперь может уничтожить весь сервер.

Я бы тоже точно не тренировался на вашем сервере за вашими боссами. Изучите дешевую виртуальную машину, размещенную в другом месте или на вашей собственной машине VirtualBox

1 голос
/ 05 января 2012

Да, это возможно. Это язык программирования, он может делать все, что угодно .

Это полностью зависит от того, кто им управляет. Если его root, он может делать все что угодно. Если это просто обычный пользователь Боб . Это не может сделать много вне дома /home/bob. Apache также похож на bob . Apache обычно работает под www-данными , www , apache именами пользователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...