Intereting Posts
Интеграция платежных шлюзов в Opencart PHP require_once не смог открыть доступ к разрешению потока Условное вложение HTML между блоками кода PHP? Изменить регистр / Забыли пароль «ссылки на действия» URL-адреса, заголовки и изменить страницы ошибок. Тема Мой подключаемый модуль с плагином WordPress multisite Ограничить работу пользователя на основе IP или в Cookie? PHP MySQL устанавливает время ожидания подключения Как автоматически перенаправить пользователя в Symfony после таймаута сеанса? Прочитать подтверждение с помощью PHPMAILER Запустить php-скрипт как процесс демона Добавление кнопки удаления в PHP в каждой строке таблицы MySQL Передача переменной из одного php включает файл в другой: global vs. not POS: получить веб-сайт для печати непосредственно на определенных локальных принтерах как считать встроенный mongodb php? Вызов функции из строки в C # 'FOS \ UserBundle \ FOSUserBundle' не найден

Реализация входа в систему вместе с suPHP

Как можно использовать функцию входа в журнал, чтобы использовать права доступа suPHP. Например, если у меня есть сайт www.example.com и следующие два пользователя с собственными домашними каталогами, каждый из которых имеет php-скрипт test.php и скрипт validateUser.php который принадлежит другому пользователю (root, www- data, apache …) в каталоге /home .

 /Главная/
 ├── validateUser.php
 ├── user1
 │ └── test.php
 └── user2
     └── test.php

user1 может получить доступ user2's скрипту пользователя2, посетив www.example.com/user2/test.php и наоборот. Вместо этого я хочу передать все входящие запросы, используя что-то вроде mod_rewrite , для validateUser.php . Тем не менее, это приведет к выполнению всех скриптов как владельца validateUser.php , а не целевого сценария test.php .

Есть ли вообще вызов php-скрипта до того, как suPHP начнет работать, а затем либо разрешить suPHP продолжить, либо полностью прекратить выполнение.


EDIT Это вторая щедрость, которую я поднимаю. Первое, что я дал Густаву b / c, он дал хороший частичный ответ . Я расскажу о том, что я сделал до сих пор, и почему никто из них не работает для меня.

1) Я попытался использовать mod_rewrite, чтобы перенаправить URL-адрес validateUser.php чтобы либо войти в систему, либо вызвать любой скрипт, который они хотели бы вызвать. Проблема в том, что я установил свои виртуальные хосты таким образом, чтобы каждый пользователь имел свой собственный виртуальный сайт (например, www.user1.example.com , www.user2.example.com … если это плохой подход к дизайну, не стесняйтесь чтобы грубо указать на это). Поэтому, хотя ОС видит файловую структуру, как указано выше, онлайн, корневые каталоги настроены как таковые

 VirtualHost = www.user1.example.com ├── validateUser.php └── test.php VirtualHost = www.user2.example.com ├── validateUser.php └── test.php 

Естественно, я просто переместил копию validateUser.php в каталог каждого пользователя. Проблема в том, что теперь пользователь может удалить этот файл и поместить туда все, что захочет, например, вообще не требует входа в систему. Путь к этому заключается в том, чтобы сделать домашнюю папку липкой (не то, что я когда-либо рекомендовал бы сделать в домашней папке) и сделать validateUser.php принадлежащим root. Но теперь он выполнит AS root, так как это suPHP. Вот где я сдался.

2) Я мог бы использовать предложение mod_auth Gustav, но мне не нравится, что он требует пароля вверх (например, старые школьные веб-сайты).

3) Я рассмотрел вариант: 1) если бы я мог перенаправлять между виртуальными хостами. Например, реструктурируйте виртуальные хосты таким образом

 VirtualHost = www.user1.example.com └── test.php VirtualHost = www.user2.example.com └── test.php VirtualHost = www.admin.example.com └── validateUser.php 

Затем используйте mod_rewrite, чтобы перенаправить весь трафик от пользователей на www.admin.example.com/validateUser.php , и если пользователь вошел в систему (или если вход успешно завершен), пользователь перенаправляется обратно на сайт, с которого они первоначально пытались войти в систему в. Преимущество этого, даже если это возможно, заключается в том, что suPHP не будет срабатывать до тех пор, пока пользователь не вернется к своему виртуальному хосту.

Рассматривали ли вы внедрение аутентификации пользователей с помощью mod_auth ? Если вы решите попробовать, есть руководство, которое может оказаться полезным.

Апач 2.2 эквивалентов:

  • mod_auth_basic
  • Аутентификация HOWTO

Обратите внимание, что браузер хранит учетные данные и отправляет их в заголовке с каждым сделанным вами запросом.