Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > Как запретить PHP скриптам листинг файлов?


Автор: karataev 21.6.2006, 23:38
У меня такая проблема: у меня хостинг на виртуальном сервере. Я даю некоторым людям ftp-аккаунты чтобы они могли тестировать свои PHP скрипты на моем сервере (мы занимаемся совместным созданием проекта). Есть папка project в ней вложены папки вида user1, user2, user3... По FTP юзеры могут попасть только в свои юзерские директории и во все вложенные директории, но выше попасть не могут.  Но сегодня я крупно пострадал от того что один из моих юзеров, что поумнее, взял да и получил доступ ко всем файлам, лежащим выше его директории. Просто из PHP скрипта, через readfile(). Также он смог изменять и удалять любые файлы на сервере.

Вопрос: как сделать чтобы из юзерских директорий скрипты могли иметь доступ только к юзерским файлам, но не к тем что лежат в папках выше? 

Автор: Mal Hack 21.6.2006, 23:44
Это надо на уровне сервера разграничивать php.
Утилита вроде бы называется suphp. Но насколько я помню, завязана она с пользователями Апача, т.е. сервер запускается с разными правами чтоли. 

Автор: karataev 22.6.2006, 22:04
Блин. Хостинг то виртуальный...получается что мы сидим с юзерами под одним линуксовским юзером, только по FTP у нас разные права.  А может еще варианты есть? 

Автор: Mal Hack 22.6.2006, 23:17
Других вариантов нет. 

Автор: karataev 22.6.2006, 23:20
Получается что мне нельзя никому давать FTP-аккаунты если я не хочу утечки информации???  smile  

Автор: Alex13 23.6.2006, 07:28
karataev, получается. 

Автор: karataev 23.6.2006, 18:19
Тогда подскажите пожалуйста как сделать с помощью .htaccess перенаправление такого типа:

вводится адрес: http://takih.net.ru/project/имя_юзера/путь_к_скрипту_юзера

нужно переделать его в адрес такого вида: http://takih.net.ru/project/check.php?u=имя_юзера&p=путь_к_скрипту_юзера

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

Автор: Mal Hack 23.6.2006, 18:34
Глянь в доке апача про mod_userdir
.htaceess тут не поможет. 

Автор: GZep 19.7.2006, 12:21
Цитата

htaceess тут не поможет. 

Поможет!
 Там есть специальная деректива, которая позволяет включать в начало каждого php скрипта специальный скрипт(который ты укажешь).
 smile Проблема заключается в том, чтобы уже из этого скрипта запретить следующим строчкам кода доступ к другим директориям...


 smile Удачи тебе. 

Автор: karataev 20.7.2006, 07:45
Спасибо, попробую что нибудь сделать smile 

Автор: GZep 20.7.2006, 12:29
Да незачто..... smile 

Если получится так сделать, напишешь результаты......
 smile  

Автор: Mal Hack 20.7.2006, 14:30
GZep, и это ты называешь решением проблемы?
Бред. Ну хорошо, файл ты запстил, а толку.
Если я в основном скрипте напишу scandir("/") и если у меня будут права на чтение данной папки, я ее все равно прочитаю. 

Автор: regret 20.7.2006, 16:49
mod_userdir    smile  

Автор: GZep 21.7.2006, 13:16
Ну, а как по-Вашему ещё можно решить подобную проблему?
 smile  

Автор: Mal Hack 21.7.2006, 14:32
Цитата(Mal Hack @  22.6.2006,  00:44 Найти цитируемый пост)
Это надо на уровне сервера разграничивать php.
Утилита вроде бы называется suphp. Но насколько я помню, завязана она с пользователями Апача, т.е. сервер запускается с разными правами чтоли.  

Вот так. 

Автор: GZep 2.8.2006, 10:13
А нельзя просто при закачки файлов, содержащих скрипты, на сервер, проверять их на наличие "опасных" функций?

Как вариант решения этой задачи сойдет..... smile 

Автор: GZep 15.9.2006, 13:48
А про дерективу disable_functions чё скажите? решает?

Автор: Mal Hack 15.9.2006, 15:35
Да, если ее можнго через .htaccess установить... Но думаю вряд ли.

Автор: ZeeLax 16.9.2006, 10:33
GZep, вопрос только в том, что такое "опасные" функции smile

Автор: nerezus 16.9.2006, 14:30
GZep, опасных функций в PHP нет.

Автор: Mal Hack 16.9.2006, 20:31
Цитата(nerezus @  16.9.2006,  15:30 Найти цитируемый пост)
GZep, опасных функций в PHP нет. 

Зато, через большинство можно так или иначе гадостей сделать...

Автор: MuToGeN 25.9.2006, 19:34
В настройках вирт.хоста

php_admin_value open_basedir /path/to/fopen_safe/directory/:/path/to/another/fopen_safe/directory/

И будет вам счастье.

Автор: GZep 4.10.2006, 13:59
Цитата(MuToGeN @ 25.9.2006,  19:34)
php_admin_value open_basedir /path/to/fopen_safe/directory/:/path/to/another/fopen_safe/directory/

я так понял, что эту дерективу простым людям хостеры использовать не дают?

Автор: MuToGeN 5.10.2006, 11:09
GZep, да.
php_admin_value - директива для конфига апача. Если ты не хостер, то смысл изначального вопроса мне не понятен.

Автор: GZep 5.10.2006, 13:46
Цитата(MuToGeN @ 5.10.2006,  11:09)
GZep, да.
php_admin_value - директива для конфига апача. Если ты не хостер, то смысл изначального вопроса мне не понятен.

в .htaccess разрешено использовать?

навернека, если даже можно, бесплатные хостинги не разрешают её использовать....или нет?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)