Встал такой вопрос.
Как после авторизации пользователя на сайте - в зависимости от его логина - назначить права досупа к папкам?
Например авторизовался пользователь user1:
1. он может скачивать файлы только из папки var/www/users/user1/files
2. может выполняется скрипт /var/www/ченибудь_такое
3. папку var/www/users/config - пользователь напрямую прочитать не может, а скрипт может.Пока предполагаю - что веб-сервером будет apache.
Но мне кажется что проблематика настолько опщая - что должно быть какое-то боле-менее стандратизированное решение =)
буквально - необходима прокладка - в апаче она именуется suexec (читай документацию).
>буквально - необходима прокладка - в апаче она именуется suexec (читай документацию).Не поможет. suexec это только для скриптов, но не для статики, а задача похоже на статику. Кое-какие идеи как это сделать есть, но это слишком геморно и того не стоит. Кстати, а каким образом вы собираетесь делать авторизацию?
Собственно для скриптов я и описываю, т.к. об этом человек и спрашивает.
>Собственно для скриптов я и описываю, т.к. об этом человек и спрашивает.
>А как тогда понимать:
>1. он может скачивать файлы только из папки var/www/users/user1/filesэто ведь доступ к статике. Если скачивание через скрипт, то сам скрипт и должен определять откуда можно, а откуда нельзя и никакой suexec тут не нужен
>>Собственно для скриптов я и описываю, т.к. об этом человек и спрашивает.
>>
>
>А как тогда понимать:
>>1. он может скачивать файлы только из папки var/www/users/user1/files
>
>это ведь доступ к статике. Если скачивание через скрипт, то сам скрипт
>и должен определять откуда можно, а откуда нельзя и никакой suexec
>тут не нуженНемного почитал, теперь могу более осознанно сформулировать.
Скрипт дает возможность пользоватлеям работать с файлами в своих папках.
Также у каждого пользователя есть файл конфига.Хотелось бы дополнительный уровень защиты, так как я не до конца уверен в качестве скрипта и есть подозрение - что много народу будет пытатся его взломать.
Не хотелось бы что в случае взлома скрипта например - пользователи лазали в чужие папки или смотрели свой конфиг.
Насчет того как проводить авторизацию - пока не решил.
Вроде как средставами веб-сервера надежнее получается (?)
>[оверквотинг удален]
>
>Хотелось бы дополнительный уровень защиты, так как я не до конца уверен
>в качестве скрипта и есть подозрение - что много народу будет
>пытатся его взломать.
>
>Не хотелось бы что в случае взлома скрипта например - пользователи лазали
>в чужие папки или смотрели свой конфиг.
>
>Насчет того как проводить авторизацию - пока не решил.
>Вроде как средставами веб-сервера надежнее получается (?)Я бы дал идею такую - rewrite rules (mod_rewrite). После успешной аутентикации подставлять имя юзера в путь, откуда можно и нужно брать файлы. Скрипт при этом будет один и работа однообразная. Для юзера прозрачно. Если конечно речь идет только о файлах которые надо показать юзеру а не о скриптах для каждого юзера, которые могут исполняться этим каждым юзером со своими правами.
Если средствами апача, то просто положите соответствующие .htaccess и .htpasswd во все папки. В папке доступной юзеру должен быть .htpasswd только с его записью
Скрипт один на всех пользователей.
Скрипт дает возможность пользователю:
1.вывести часть файла в виде html страницы.
2. дать прямую ссылку на файл.Поэтому я боюсь:
1. что пользователь сломав скрипт сможет прочитать файлы другого пользователя (или файл своего конфига).
2. напрямую скачать файл из чужой папки.Насколько я понял на данный момент, первое решается с помощью suexec, второе с помощью .htaccess и .htpasswd.
Я прав? %)
p.s. Насчет mod_rewrite не очень понял. Он решает только вторую проблему? %)
Если интерфейс идет через скрипт то можно сделать намного проще и удобней для пользователя (так как http authorization жутко раздражает). Создаете каталог доступный сточки зрения апача всем пользователям и отключаете на нем индексы. То есть зная имя файла его прочитать можно, но вот список имен посмотреть нельзя. Файлы пользователей храните в каталогах, недоступных через браузер. Когда пользователь заправшивает файл создаете hardlink на этот файл в общедоступном каталоге с именем сгенерированным по типу GUID и отдаете пользователя это имя. Время от времени хардлинки можно удалять.По поводу взлома. ввведите жесткие ограничения на используемые символы в данных от пользователя. которые каким либо образом используются в операциях с БД или файлами. Используйте регэкспы для проверки. Например запретите в логине, пароле, имени аплоадящегося файла все символы кроме A-z0-9_. Если нельзя ограничить данные для БД, то используйте специфическую для данной БД функцию экранированя, а лучше вообще делайте запросы с параметрами через prepare/execute