Есть ли защита от suPHP? - PullRequest
       28

Есть ли защита от suPHP?

1 голос
/ 02 марта 2012

Я задал этот вопрос некоторое время назад, и хотя я выставил несколько наград, я так и не получил большого ответа (см. здесь ). В целом, я хочу знать, есть ли какая-либо концепция безопасности с suPHP? Что мешает кому-либо перейти на

www.example.com/rm-f-r.php

или

www.example.com/return_some_iamge.php

Поскольку эти сценарии выполняются с привилегиями пользователя, это, по сути, гарантированный доступ.


РЕДАКТИРОВАТЬ Чтобы уточнить выше, моя проблема является концептуальной. Предположим, у нас есть файл на /home/user/test.php. Пусть этот файл что-нибудь сделает (rm -f -r /, загрузит и вернет картинку, перезагрузит компьютер ...) Если я указываю браузеру на этот файл (при условии, что содержащая папка является активным сайтом под Apache), как мне сказать браузеру: только позволить владельцу этого файла выполнить его?


РЕДАКТИРОВАТЬ 2: Я никогда не заявлял об этом явно, поскольку предполагал, что suPHP используется только с apache (т. Е. Веб-браузерами), но я говорю об аутентификации пользователей linux только с браузером. Если мы не аутентифицируемся, то любой технически имеет доступ к любому скрипту на сервере (с веб-сайтами это не проблема, так как у них всегда установлены права доступа 0644, поэтому, по сути, весь мир может видеть. PHP-файлы на другом стороны, обычно имеют права доступа 0700)

1 Ответ

4 голосов
/ 02 марта 2012

suPHP приводит к тому, что среда выполнения PHP выполняется с разрешения пользователя, который создал файл .php. Это означает, что автор программы PHP может только читать и записывать файлы, которые он сам имеет или имеет к ним доступ.

Если вы разместите файл PHP на своем веб-сайте, вы сделаете его общедоступным для всех, кто заходит на ваш сайт - при использовании suPHP это не изменит . Без входа на ваш сайт все веб-пользователи фактически анонимны, и невозможно надежно идентифицировать человека. suPHP контролирует только локальные разрешения, которые будет иметь скрипт при его выполнении, он не намерен вводить какую-либо форму аутентификации или авторизации веб-пользователя.

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

...