URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5341
[ Назад ]

Исходное сообщение
"Права на папки."

Отправлено shiza , 31-Окт-07 16:09 
Встал такой вопрос.
Как после авторизации пользователя на сайте - в зависимости от его логина - назначить права досупа к папкам?
Например авторизовался пользователь user1:
1. он может скачивать файлы только из папки var/www/users/user1/files
2. может выполняется скрипт /var/www/ченибудь_такое
3. папку var/www/users/config - пользователь напрямую прочитать не может, а скрипт может.

Пока предполагаю - что веб-сервером будет apache.
Но мне кажется что проблематика настолько опщая - что должно быть какое-то боле-менее стандратизированное решение =)


Содержание

Сообщения в этом обсуждении
"Права на папки."
Отправлено Answer , 31-Окт-07 20:09 
буквально - необходима прокладка - в апаче она именуется suexec (читай документацию).

"Права на папки."
Отправлено angra , 01-Ноя-07 06:55 
>буквально - необходима прокладка - в апаче она именуется suexec (читай документацию).

Не поможет. suexec это только для скриптов, но не для статики, а задача похоже на статику. Кое-какие идеи как это сделать есть, но это слишком геморно и того не стоит. Кстати, а каким образом вы собираетесь делать авторизацию?



"Права на папки."
Отправлено Answer , 01-Ноя-07 12:47 
Собственно для скриптов я и описываю, т.к. об этом человек и спрашивает.

"Права на папки."
Отправлено angra , 02-Ноя-07 09:08 
>Собственно для скриптов я и описываю, т.к. об этом человек и спрашивает.
>

А как тогда понимать:
>1. он может скачивать файлы только из папки var/www/users/user1/files

это ведь доступ к статике. Если скачивание через скрипт, то сам скрипт и должен определять откуда можно, а откуда нельзя и никакой suexec тут не нужен


"Права на папки."
Отправлено shiza , 02-Ноя-07 11:45 
>>Собственно для скриптов я и описываю, т.к. об этом человек и спрашивает.
>>
>
>А как тогда понимать:
>>1. он может скачивать файлы только из папки var/www/users/user1/files
>
>это ведь доступ к статике. Если скачивание через скрипт, то сам скрипт
>и должен определять откуда можно, а откуда нельзя и никакой suexec
>тут не нужен

Немного почитал, теперь могу более осознанно сформулировать.

Скрипт дает возможность пользоватлеям работать с файлами в своих папках.
Также у каждого пользователя есть файл конфига.

Хотелось бы дополнительный уровень защиты, так как я не до конца уверен в качестве скрипта и есть подозрение - что много народу будет пытатся его взломать.

Не хотелось бы что в случае взлома скрипта например - пользователи лазали в чужие папки или смотрели свой конфиг.

Насчет того как проводить авторизацию - пока не решил.
Вроде как средставами веб-сервера надежнее получается (?)


"Права на папки."
Отправлено kino404 , 02-Ноя-07 12:43 
>[оверквотинг удален]
>
>Хотелось бы дополнительный уровень защиты, так как я не до конца уверен
>в качестве скрипта и есть подозрение - что много народу будет
>пытатся его взломать.
>
>Не хотелось бы что в случае взлома скрипта например - пользователи лазали
>в чужие папки или смотрели свой конфиг.
>
>Насчет того как проводить авторизацию - пока не решил.
>Вроде как средставами веб-сервера надежнее получается (?)

Я бы дал идею такую - rewrite rules (mod_rewrite). После успешной аутентикации подставлять имя юзера в путь, откуда можно и нужно брать файлы. Скрипт при этом будет один и работа однообразная. Для юзера прозрачно. Если конечно речь идет только о файлах которые надо показать юзеру а не о скриптах для каждого юзера, которые могут исполняться этим каждым юзером со своими правами.


"Права на папки."
Отправлено angra , 03-Ноя-07 15:10 
Если средствами апача, то просто положите соответствующие .htaccess и .htpasswd во все папки. В папке доступной юзеру должен быть .htpasswd только с его записью


"Права на папки."
Отправлено shiza , 05-Ноя-07 04:59 
Скрипт один на всех пользователей.
Скрипт дает возможность пользователю:
1.вывести часть файла в виде html страницы.
2. дать прямую ссылку на файл.

Поэтому я боюсь:
1. что пользователь сломав скрипт сможет прочитать файлы другого пользователя (или файл своего конфига).
2. напрямую скачать файл из чужой папки.

Насколько я понял на данный момент, первое решается с помощью suexec, второе с помощью .htaccess и .htpasswd.

Я прав? %)

p.s. Насчет mod_rewrite не очень понял. Он решает только вторую проблему? %)


"Права на папки."
Отправлено angra , 05-Ноя-07 20:21 
Если интерфейс идет через скрипт то можно сделать намного проще и удобней для пользователя (так как http authorization жутко раздражает). Создаете каталог доступный сточки зрения апача  всем пользователям и отключаете на нем индексы. То есть зная имя файла его прочитать можно, но вот список имен посмотреть нельзя. Файлы пользователей храните в каталогах, недоступных через браузер. Когда пользователь заправшивает файл создаете hardlink на этот файл в общедоступном каталоге с именем сгенерированным по типу GUID и отдаете пользователя это имя. Время от времени хардлинки можно удалять.

По поводу взлома. ввведите жесткие ограничения на используемые символы в данных от пользователя. которые каким либо образом используются в операциях с БД или файлами. Используйте регэкспы для проверки. Например запретите в логине, пароле, имени аплоадящегося файла все символы кроме A-z0-9_. Если нельзя ограничить данные для БД, то используйте специфическую для данной БД функцию экранированя, а лучше вообще делайте запросы с параметрами через prepare/execute