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


Автор: aazon 23.3.2006, 16:04
Всем превед!
У меня проблема заключается в следующем... Я разрабатываю систему, когда юзеры могут иметь свои сайты и закачивать туда разные картинки, странички и типа того. При этом у меня стоит проверка, чтобы не закачивались *.php файлы, точнее стоит проверка на разрешенные типы файлов. Эти файлы лежат в папке, назовем ее data. Но меня все равно стремает вариант, когда юзеру удасться закачать шелл в эту папку. Здесь я вижу два решения проблемы:
1. Сделать папку data с доступом 755. А перед закачкой файлов скриптом делать
Код

chmod('data',0777)
, а потом возвращать к
Код
chmod('data',0775)
. Но это почему-то не получается. Первый chmod срабатывает, а второй - нет. Никто не знает, в чем причина?
2. Прописать в .htaccess запрет на выполнение php файлов (если такое возможно). Я пробовал прописывать директивы
Код

<Files ~ "^\.php">
    Order allow,deny
    Deny from all
</Files> 

с запретом по маске, но или маску указал неправильно, или еще чего-то, вобщем скрипт data/shell.php запрещается, а скрипт data/shell.php?a=1 работает.

Какие будут идеи по решению этой задачи?

ЗЫ Если эта тема уже поднималась - извиняюсь, а не смог ее быстро найти, а копаться, к сожалению, нет времени

Автор: z-END 23.3.2006, 16:33
Цитата(aazon @ 23.3.2006, 16:04 Найти цитируемый пост)
Но меня все равно стремает вариант, когда юзеру удасться закачать шелл в эту папку

1. а если подумать логично, как ему это удастся?!
2. как вариант, после закачки фалов проверять все файлы в папке data еще раз, на наличие в нем файлов, запрещенных к закачке.

Автор: aazon 23.3.2006, 16:47
Цитата

как вариант, после закачки фалов проверять все файлы в папке data еще раз, на наличие в нем файлов, запрещенных к закачке

Тебе не кажется, что это намного геморойнее, чем один раз запретить исполнять пхп файлы?!

Автор: z-END 23.3.2006, 16:57
Цитата(aazon @ 23.3.2006, 16:47 Найти цитируемый пост)
Тебе не кажется, что это намного геморойнее, чем один раз запретить исполнять пхп файлы?!

конечно кажетсяsmile мне вообще кажется что это хм.. ну так сказать паранояsmile)
если у тебя идет проверка при закачке файлов на их тип, то скажи мне ткуда там появится файл с запрещенным расширением?! ты же прямого фтп доступа непредоставляешь...

Автор: Darhazer 23.3.2006, 17:15
Маску точно неправильно написал... попробуй "\.php$"

Автор: aazon 28.3.2006, 14:28
А все-таки, почему chmod() не работает?

Автор: Janus 31.3.2006, 17:09
Просто запрети папку на выполнение. Да и закачиваемым файлам сразу выставляй нужные права - чтение для мира, запись для владельца, остальное по нулям.

Автор: paraZite 11.4.2006, 11:19
Цитата
Просто запрети папку на выполнение. Да и закачиваемым файлам сразу выставляй нужные права - чтение для мира, запись для владельца, остальное по нулям.
Это не спасёт от выполнения пхп скрипта, он будет работать и с chmod 0444). .htaccess рулит, но опять же, если на сайте будет обнаружен локальный инклюд баг, все твои старания пойдут на смарку.

Автор: Medwoodu 20.4.2006, 15:48
Например в .htaccess прописываешь такие строчки:
AddType image/jpeg php и у тебя все файлы пхп апач начинает считать рисунками. smile 
а во время закачки проверяешь тип файла 

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