Есть ли какая-либо безопасность с suPHP?

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

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

or

www.example.com/return_some_iamge.php

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


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


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


person puk    schedule 02.03.2012    source источник
comment
Ваш вопрос не ясен. Что не так с серверной программой, удаляющей файлы или возвращающей изображения? Какой доступ гарантируется? Я просто не могу понять, о чем вы пытаетесь спросить, предложить или от чего защититься.   -  person Cheekysoft    schedule 02.03.2012
comment
@Cheekysoft, я отредактирую вопрос   -  person puk    schedule 02.03.2012
comment
Я вполне уверен, что мой вопрос не имеет решения stackoverflow.com/a/9561335/654789   -  person puk    schedule 06.03.2012


Ответы (1)


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

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

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

person Cheekysoft    schedule 02.03.2012
comment
Да, но как установить право собственности через веб-браузер? В линуксе вы входите и начинаете сеанс, есть ли соответствующий вход в браузеры? - person puk; 02.03.2012
comment
Вам нужно будет изучить сеансы и методы аутентификации пользователей в PHP. Или для быстрого исправления посмотрите на директивы Apache limit/allow/deny и элементы управления htpasswd, например. yolinux.com/TUTORIALS/ - person Cheekysoft; 02.03.2012
comment
как бы я прервал это? Концептуальная проблема, с которой я столкнулся, заключается в том, что если я буду вмешиваться в сценарий php, я рискую изменить пользователя, с которым выполняется сценарий php. Я предполагаю, что apache перехватит все запросы к любому файлу php и отправит их в файл проверки, назовем его validate.php, и, в случае успеха, validate.php вызовет исходный файл php. Но теперь validate.php был запущен как, вероятно, пользователь var-www, так же как и исходный файл php. AFAIK suPHP меняет пользователя только один раз в самом начале. - person puk; 02.03.2012
comment
Один человек предложил элементы управления htpasswd, и это, безусловно, самое простое решение, я просто нахожу его немного грубым, когда всплывающее окно 1993 года запрашивает ваш логин и пароль. - person puk; 02.03.2012
comment
Почему вы редактируете и хотите прервать чужие PHP-скрипты? Ваша ситуация странная и необъяснимая. Я думаю, вам нужно объяснить свое прошлое. Возможно, вы задаете неправильные вопросы, чтобы удовлетворить ваши конкретные потребности. Похоже, вы спрашиваете, как реализовать предлагаемое вами решение вашей проблемы; вместо того, чтобы просто заявить о своей проблеме и попросить идеи решения. Вам, вероятно, следует перемотать назад и задать новый вопрос, который на самом деле указывает, какую корневую проблему вы пытаетесь решить. - person Cheekysoft; 02.03.2012
comment
Я не редактирую сам по себе, я просто пытаюсь сопоставить базовые права доступа к файлам с веб-сайтами. Я хочу, чтобы пользователь john был единственным человеком, имеющим доступ ко всему в /home/john/. С suPHP я могу перемещаться по файлам в этой папке, используя только права доступа к файлам Linux. У меня проблема в заливке насоса - person puk; 02.03.2012
comment
Вы, наверное, правы. Я создам новый вопрос, запрашивая идеи решения - person puk; 02.03.2012
comment
Я как мог старался переформулировать вопрос. stackoverflow.com/questions/9542263 / - person puk; 03.03.2012
comment
@Cheekysoft, просто уточнение, реальный путь (и путь символической ссылки, если синлинки используются на пути должен) также должны быть доверенными. В этом смысле доверенный означает, что каталог должен либо принадлежать UID скрипта, либо мой корень, и по умолчанию suPHP также настроен на требование, чтобы ни один из них не был групповым или другим доступным для записи. - person TerryE; 06.03.2012