The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Защите директории с аватарами - .htaccess ?"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [ Отслеживать ]

"Защите директории с аватарами - .htaccess ?"  +/
Сообщение от blacks (ok) on 12-Июл-09, 22:15 
Доброе время суток все.
Это мой первый пост на данном форуме не обессудьте если что не так (правила читал)


Задача:
закрыть папку (chmod 777) в которую загружаются аватарки пользователей.
(также хочу данный .htaccess применить к папкам с шаблонами, фотками, аттачей и пр)

Почти целую неделю лазил и выяснял какой необходим .htaccess.
К точному занаменателю не пришел.
Составил сборку директив в тестовом .htaccess

Но есть подозрения что есть дубли.
Что-то может пойти не так и станет еще хуже (по безопасности)

Привожу ниже код .htaccess с добавленными детективами.
Подскажите пожалуйста что в нем лишнее / что продублировано / что лучше улучшить?


ЛИСТИНГ .htaccess
----------------------------------------
# запрет листинга всех папок и под-папок
Options -Indexes


php_flag engine 0
AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp


# Отключаем PHP.
RemoveType php


<IfModule mod_php4.c>
  php_flag engine 0
</IfModule>

<IfModule mod_php5.c>
  php_flag engine 0
</IfModule>


# запрет на запуск файлов
RemoveHandler .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml
AddType application/x-httpd-php-source .phtml .php .php3 .php4 .php5 .php6 .phps .cgi .exe .pl .asp .aspx .shtml .shtm .fcgi .fpl .jsp .htm .html .wml

# запрет доступа к файлам
Order Deny, Allow
Deny from all
----------------------------
ЗАВЕРШЕНИЕ .htaccess


Небольшие пояснения.
1. в папке с аватарками еще лежит пустой index.html
2. столько много "методов защит" - парайноя беспокоит :)
3. не оставил только Deny from all потому как слышал что
хакерский скрипт может из другой папки "запустить" зараженную аватарку
4. расширения указанные в качестве запрета могут быть изменены
(или немного не считаться)


Небольшие дополнения.

1. нашел вот еще такую "заплатку" - стоит ли ее добавить в .htaccess
<FilesMatch ".*">
Order allow,deny
Deny from all

<FilesMatch "\.(список_легетимных_расширений через |)$|^$">
Order deny,allow
Allow from all


2. и еще одну - также не могу понять добовлять ее или нет :/

Options None
Options +FollowSymLinks

Всем откинувшимся заранее большое СПАСИБО!

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от angra (ok) on 12-Июл-09, 23:09 
Написали вы много, но забыли самое главное - защитить от чего? :)
Судя по приведенным примерам, от загрузки исполнимого php кода под видом аватарки. Для начала конечно стоило бы просмотреть код, занимающийся аплоадом, возможны три варианта:
1) написан ногами, есть возможность указать произвольный путь и .htaccess в папке не будет играть роли.
2) написан руками и либо не использует имя файла, полученное от пользователя, генерируя свое, либо использует регекс для проверки валидных символов. В таком случае никакой нужды в дополнительной защите не будет.
3) что-то среднее, защита через .htaccess имеет некоторый смысл. Однако она защитит только от прямого обращения, но не от инклудов, так как последние выполняются движком php, а не апача и игнорят .htaccess(да и основной конфиг тоже). Я лично предпочел бы .htaccess из одной строки:
SetHandler default-handler
Он работает, если php сконфигурирован без всяких хаков. В любом случае рекомендуется для проверки самостоятельно положить php файл в целевую директорию и попробовать к нему обратится через web.
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от blacks (ok) on 13-Июл-09, 00:02 
>Написали вы много, но забыли самое главное - защитить от чего? :)

Сорри что не уточнил :)


>Судя по приведенным примерам, от загрузки исполнимого php кода под видом аватарки.

Да точно так!


>Для начала конечно стоило бы просмотреть код, занимающийся аплоадом

Код в CMSке в PHP я не силен. Поэтому даже если так и нет проверки на
расширения загружаемых файлов(или еще как проверка) то поставить нужный
мне будет проблематично.

Разобрать вопрос досконально мне интересно но к сожалению сейчас на все
времени не хватает поэтому и взялся за .htaccess(

Спасибо за советы.
Как только будет побольше времени попробую посмотреть код аплоуда


>так как последние выполняются движком php, а не апача и игнорят .htaccess

А если я в папке через  php_flag engine 0 в .htaccess исключаю запуск скриптов
то как PHP запустятся?


>для проверки самостоятельно положить php файл в целевую директорию и попробовать
>к нему обратится через web.

Просто кинуть php скприптик с эхом в папку с аватарками
и посмотреть через браузер что будет?
Есть еще способы как можно протестировать безопастность "папочки avatar" ?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от angra (ok) on 13-Июл-09, 00:14 
>>так как последние выполняются движком php, а не апача и игнорят .htaccess
>
>А если я в папке через  php_flag engine 0 в .htaccess
>исключаю запуск скриптов
>то как PHP запустятся?

Да какая разница что будет в папке, инклуд просто читает содержимое файла системными функциями, он не обращается к веб-серверу. Так что, если есть дырявый скрипт в другой директории, которому можно подсунуть произвольное имя файла для инклуда, то выполнится "аватарка" на ура. Типичный пример быдлокодерства: передача имени модуля в качестве параметра для index.php, который добавляет к имени путь/расширение и инклудит, в лучшем случае проверит существование файла. Когда работал на крупного хостера такое видел на каждом шагу, причем не на самописных хомпагах.


>Просто кинуть php скприптик с эхом в папку с аватарками
>и посмотреть через браузер что будет?

ну да

>Есть еще способы как можно протестировать безопастность "папочки avatar" ?

Ну так зависит от чего еще вы хотите защитится :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от blacks (ok) on 13-Июл-09, 00:22 
>Да какая разница что будет в папке, инклуд просто читает содержимое файла

То есть приведенный мною .htaccess вообще не рабочий?! :(


>Ну так зависит от чего еще вы хотите защитится :)

От много за короткий промежуток времени и надолго :)


По поводу защиты скриптов - тут могу работать только по мере поступления и
свободного времени :/

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от angra (ok) on 13-Июл-09, 00:42 
>>Да какая разница что будет в папке, инклуд просто читает содержимое файла
>
>То есть приведенный мною .htaccess вообще не рабочий?! :(

Что мешает проверить? По идее начальную задачу он решает, то есть отключает прямое выполнение скриптов, а от инклуда защитится так просто не получится, хотя может в suhosin что-то на эту тему найдется. Не забывайте, что для инклуда дырка должна быть в другом месте. Повторю прописную истину: защита имеет смысл только в комплексе и надежность ее равна надежности самого слабого звена.


>>Ну так зависит от чего еще вы хотите защитится :)
>
>От много за короткий промежуток времени и надолго :)

Нанимаете хорошего специалиста по безопасности и дело сделано. Как известно из быстро/качественно/дешево всегда можно получить не более двух пунктов одновременно.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от blacks (ok) on 13-Июл-09, 01:01 

>Что мешает проверить?
>По идее начальную задачу он решает, то есть отключает прямое выполнение скриптов,

думается что там что-то дублированное есть - лишнее


>хотя может в suhosin что-то на эту тему найдется.

посмотрел бегло что это такое - по моему для новичка сложновато.
плюс еще показалось что там вроде права сервера нужны - на шаред хостинге не пойдет


>Не забывайте, что для инклуда дырка должна быть в другом месте.

Вот и стараюсь по мере поступления и по мере сил изучать и зашивать дыры


>Нанимаете хорошего специалиста по безопасности и дело сделано.

- пока не могу себе этого позволить ибо учусь + работаю как одиночка


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от angra (ok) on 13-Июл-09, 07:04 
>думается что там что-то дублированное есть - лишнее

Ну оно там есть хотя бы из-за того, что приведенный мной вариант занимает всего одну строку :)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от blacks (ok) on 13-Июл-09, 08:09 
>Ну оно там есть хотя бы из-за того, что приведенный мной вариант
>занимает всего одну строку :)
>SetHandler default-handler

- погуглил немного но так и не понял что это строка делает?
- в основном попадалась в настройке кофига сервера
- данная деректива будет работать в .htaccess на шаред(виртуальном) хостинге?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от angra (ok) on 13-Июл-09, 14:37 
> - погуглил немного но так и не понял что это строка
>делает?

Зачем гуглить, если можно посмотреть официальную доку http://httpd.apache.org/docs/2.2/mod/directives.html

> - данная деректива будет работать в .htaccess на шаред(виртуальном) хостинге?

Никак не могу понять, что вам мешает за одну минуту проверить вместо того, чтобы спрашивать на форумах. У меня на сервере работает, но пых можно настроить и через жопу, тогда за ее работу не поручусь.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

10. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от blacks (ok) on 13-Июл-09, 17:57 
>SetHandler default-handler

" Описание: устанавливает обработчик для файлов в заданной директории  "
" Синтаксис: SetHandler handler-name  "

С английским у меня туга, старался-искал.
Но вот по handler-name не нашел :(
Если директива устанавливает обработчик для файлов.. то что за обработчик handler-name ?
- так и не понял как работает ваша директива :(((

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

11. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от angra (ok) on 13-Июл-09, 18:20 
http://httpd.apache.org/docs/2.2/handler.html
ну или на русском, если не заметили "Available Languages:  en  |  es  |  fr  |  ja  |  ko  |  ru  |  tr"
http://httpd.apache.org/docs/2.2/ru/handler.html

mod_php добавляет свой собственный обработчик(handler) и при правильной конфигурации апача этот обработчик связывается с определенными типами файлов при помощи AddHandler. Вместо AddHandler, работающего по расширениям файлов, можно использовать SetHandler, который заставляет применять указанный обработчик для все файлов в блоке(Directory, Location, Files, .htaccess), независимо от расширения и установленных ранее обработчиков. Строчка, приведенная мной, заставляет все файлы в каталоге(и его подкаталогах, .htaccess рекурсивны) обрабатывать как статику(встроенный default-handler).

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

12. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от blacks (ok) on 13-Июл-09, 18:49 
>обрабатывать как статику(встроенный default-handler).

- тоесть PHP будет отображена как статичная html?

Спасибо за подробное описание! - теперь все понял

А по поводу анг/русс - русский перевод на http://httpd.apache.org/ местами очень страдает  :)


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

13. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от angra (ok) on 13-Июл-09, 20:11 
> - тоесть PHP будет отображена как статичная html?

Нет не будет ибо это была бы его обработка, будет обычная загрузка файла. Который раз уже в этом треде повторяю: посмотрите сами, это быстрее чем спрашивать на форуме.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

14. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от pro100master (ok) on 15-Июл-09, 11:23 
>Задача:
>закрыть папку (chmod 777) в которую загружаются аватарки пользователей.
>(также хочу данный .htaccess применить к папкам с шаблонами, фотками, аттачей и
>пр)

задача в корне неверная. Я бы поставил её так: обезопасить сервер от возможных дырок с использованием аватарок.

Можно убрать директорию с аватарками вообще из веба, а места вызова аватарок (в шаблонах и коде) заменить на /avatar.php?f=filename и сделать этот apavatar.php на подобие одного из вариантов: createimagefromjpg/gif -> imagejpg -> exit; или просто echo filegetcontents

Локализовав таким образом проблему, поставив suhosin (под freebsd 3 комманды включая перезагрузку апача) и выжигая из параметров avatar.php всякую нечисть вы НЕ будете постоянно дёргать апач и избавитесь от левых инклудов, даже в том случае, если есть где-то дырки в другом месте. Если что-то левое и будет залито (как? по-нормальному проверяются размеры картинок и если они нулевые (будет эксепшн или размер нуль при загрузке файлов, отличных и картинок)) то ничего критичного не случится.

Почему я советую suhosin? Чужому, как тут вам уже писали - часто быдлокоду, доверять нельзя. Поэтому грубые дырки он худо бедно закроет. Если хостинг не ваш, метод с выводом в другую папку (неизвестную злоумышленникам) здорово подпортит им настроение.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

15. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от blacks (ok) on 15-Июл-09, 17:30 
>задача в корне неверная. Я бы поставил её так: обезопасить сервер от
>возможных дырок с использованием аватарок.

Аватарка как пример.
Вообще хотелось обезопасить сайт от всего что могут залить в папку с chmod 777 :)


>Можно убрать директорию с аватарками вообще из веба, а места вызова аватарок (в шаблонах и коде) заменить на /avatar.php?f=filename и сделать этот apavatar.php на подобие одного из вариантов: createimagefromjpg/gif -> imagejpg -> exit; или просто echo filegetcontents

Для меня пока заумно - как только разберусь с работой в PHP так займусь.
Спасибо.
Еще мне советовали заливать аватарки в папку выше чем есть / вне хоста с CMSкой
- но тоже пока не дорос.


>Почему я советую suhosin?

Эх.. хостинг не мой. Но спасибо :)
А может быть что у хостера(курпного) такая штука уже поставленна?


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

16. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от pro100master (ok) on 15-Июл-09, 19:32 
>Для меня пока заумно - как только разберусь с работой в PHP
>так займусь.

это как раз и есть...

>Еще мне советовали заливать аватарки в папку выше чем есть / вне
>хоста с CMSкой

Пример.

Вы - юзер в папке /usr/home/user/
www - в папке /usr/home/user/data/www/
аватарки - /usr/home/user/data/www/images/avatars/
Переснести папку с аватарками в /usr/home/user/avatars
+ потом поменять скрипты, чтобы они вызывали что-то вроде
www.domen.ru/avatars.php?filename=blablabla
+ ну и сделать этот файл /usr/home/user/data/www/avatars.php
вида
<?php

if( !isset($_GET['filename']) ) header('Location: http://www.domen.ru');
include(санитарный_файл);
$file = '/usr/home/user/data/www/images/avatars/' + ***ваша_санитарная_функция***($_GET['filename']);
if( file_exists($file) ){
*** тут вывести заголовки, в зависимости от поддерживаемый форматов и расширения файла (типа header('Content-type: image/jpeg');)
echo file_get_contents($file);
}
else header('Location: http://www.domen.ru');
?>
***ваша_санитарная_функция*** - должна уметь вырезать всё лишнее - '../', '\\..' и т.п. (особенно XSS, потому что могут передать www.domen.ru/avatar.php?filename=http://domen2.com)


и всё :)


>А может быть что у хостера(курпного) такая штука уже поставленна?

зависит от хостера. Массовому хостеру самому резонно его включать

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

17. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от blacks (ok) on 15-Июл-09, 20:09 
Спасибо ! :)

>***ваша_санитарная_функция*** - должна уметь вырезать всё лишнее - '../', '\\..' и т.п.
>(особенно XSS, потому что могут передать www.domen.ru/avatar.php?filename=http://domen2.com)

- я правильно понял "ваша_санитарная_функция" - код который убирает лишнии слеши(переходы)
- небольшая программка-код на PHP находящиеся в движке CMSки?


>зависит от хостера. Массовому хостеру самому резонно его включать

- стоит написать хостеру - поинтересоваться?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

18. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от pro100master (ok) on 15-Июл-09, 22:15 
>- я правильно понял "ваша_санитарная_функция" - код который убирает лишнии слеши(переходы)
>- небольшая программка-код на PHP находящиеся в движке CMSки?

да, обычно - функция. Пример можно подсмотреть и украсть тут http://svn.bitflux.ch/repos/public/popoon/trunk/classes/exte... - почти все уязвимости входящих данных класс покрывает.

> - стоит написать хостеру - поинтересоваться?

с хостером надо дружить и общаться. Если регулярно платите и в конституции компании есть правило "идти навстречу клиенту" - они идут, в пределах разумного. Но надо понимать, что suhosin лишь грубый и очень частичный механизм, не отменяющий чистку. Просто это способ защиты от дурака, применяемый хостинг-провайдерами. Поэтому он не обязателен, если все входящие данные проходят "санитарную обработку" (и не включен register_globals, a $GLOBALS не используется или тоже обработан).

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

19. "Защите директории с аватарами - .htaccess ?"  +/
Сообщение от blacks (ok) on 17-Июл-09, 01:32 
>да, обычно - функция.

Спасибо. Как только начну изучать PHP займусь целю все это "приладить"...

>с хостером надо дружить и общаться.

- если я саппорт еще не достал то вполне дружелюбные О:)
- попробую им написать


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру