Xpoint
   [напомнить пароль]

Защита директории с аватарами - .htaccess ?

Метки: [без меток]
2009-07-13 02:24:01 [обр] Black-s[досье]

Доброе время суток все.

Задача:
закрыть папку (chmod 777) в которую загружаются аватарки пользователей.
(также хочу данный .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

Небольшие пояснения

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

хакерский скрипт может из другой папки "запустить" зараженную аватарку

  1. расширения указанные в качестве запрета могут быть изменены

(или немного не считаться)

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

  1. нашел вот еще такую "заплатку" - стоит ли ее добавить в .htaccess
FilesMatch ".*">
Order allow,deny
Deny from all
 
<FilesMatch "\.(список_легетимных_расширений через |)$|^$">
Order deny,allow
Allow from all
  1. и еще одну - также не могу понять добовлять ее или нет :/
Options None
Options +FollowSymLinks

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

спустя 8 часов [обр] Филипп Ткачев(6/112)[досье]
Black-s[досье], защита от чего?
Грамотный подход: защита от возможности положить в эту папку "зараженную" аватарку.
Выход: правильный скрипт загрузчика, проверяющий картинку, например через mime-type, ну и после загрузки проверяющий с помощью того же clamav на наличие внедрений.
А защита директории - просто ерунда.
спустя 23 минуты [обр] Прокаев2(0/35)[досье]

Грамотный подход: защита от возможности положить в эту папку "зараженную" аватарку.

+ расширение принудительно

спустя 3 часа 40 минут [обр] triumvurat[досье]

mime-type можно любой послать. Лично я не заморачиваюсь и проверяю через getimagesize, является ли файл картинкой. engine off для папки с уплоадом. Этого хватит. А насчет "зараженных" аватаров, то это вопрос малоизученный.

# запрет доступа к файлам

Так это же сделает их недоступными через HTTP, разве нет?

спустя 28 минут [обр] Black-s[досье]
Выход: правильный скрипт загрузчика, проверяющий картинку, например через mime-type,

 - я пока не силен в PHP поэтому полагаюсь на CMSку

ну и после загрузки проверяющий с помощью того же clamav на наличие внедрений.

 - это только если у меня есть собственный "серврер и я рутт" - на шаред хостинге не покатит?
 - а должны на крупных хостингах, на серверах стоять антивирусы?

А защита директории - просто ерунда.

 - ну что-то лучше чем ничего ;)

+ расширение принудительно

 - а как это реализуется - переписыванием файла полностью?

Лично я не заморачиваюсь и проверяю через getimagesize, является ли файл картинкой. engine off для папки с уплоадом.

 - у меня пока CMS'ка что-то делает.. а на что в ней поискать чтоб узнать проверяет ли она файлы или нет?]>

Так это же сделает их недоступными через HTTP, разве нет?

 - она закрывает от того чтоб с браузера зайти но запуск с стороны скриптов с тогже сайта нет

]>
]>

спустя 13 минут [обр] triumvurat[досье]
а на что в ней поискать чтоб узнать проверяет ли она файлы или нет?

выучить PHP или нанять программиста.

она закрывает от того чтоб с браузера зайти но запуск с стороны скриптов с тогже сайта нет

ИМХО не самое удачное решение. Статика дожна быть статикой.

спустя 2 часа 51 минуту [обр] Филипп Ткачев(6/112)[досье]
Black-s[досье], на нормальных хостингах есть и антивирусы, и спам фильтры. Наконец нужно соблюдать баланс между нагрузкой на хостинг и безопасностью.
Вообще я противник создания каких-либо файлов со стороны клиента. А если это и нужно, то только жесткая фильтрация по расширению и выдача сгенерированного имени файла.
triumvurat[досье] предлагает вам getimagesize(), разумное и оправданное решение (если только не Flash-аватарка), хотя используя тот же getimagesize() можно попытаться взломать сервер или его задосить.
А насчет хакерских скриптов из другой папки: защита аватарок бессмысленна, если существует возможность создать такой скрипт. Кому нужны ваши аватарки? Лучше использовать чужой сайт для иных корыстных целей.
спустя 20 минут [обр] Black-s[досье]
А насчет хакерских скриптов из другой папки: защита аватарок бессмысленна, если существует возможность создать такой скрипт. Кому нужны ваши аватарки? Лучше использовать чужой сайт для иных корыстных целей

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

Собственно по сабжу - что у меня там дублем-лишнее :) ? - просто не хочется ворох оставлять.
А файл всетаки для пущего запишу на хостинг. Далее постепенно над защитой буду учиться

спустя 3 месяца 21 день [обр] Амир(0/4)[досье]
Филипп Ткачев[досье] а какие действия перед аплоадом нужно провести с изображением при помощи imagick для безопасноти?
спустя 10 часов [обр] Филипп Ткачев(6/112)[досье]
Перед аплоадом вы не сможете произвести каких-либо действий. Можно попытаться считать value для INPUT и проверить расширение файла. Если оно не такое, как надо, сообщить пользователю. Это максимум.
Можно написать свой элемент для загрузки файла на flash или на java. Там уже свободы поболе.
спустя 12 часов [обр] Амир(0/4)[досье]
извените не верно выразился я.
имел ввиду какие манипуляции с изображением можно провести,при помощи imagick.перед тем как поместить файл в директорию
чтобы зловредный код если он есть перестал быть работающим .
особенно xss опасаюсь.
exif тэги и все такое нашел как удалять.
спустя 1 день 10 часов [обр] Филипп Ткачев(6/112)[досье]

Я бы постарался создать новое изображение из старого. Если это удается, то значит изображение нормальное. И в конце концов сохранить новое изображение вместо старого.

В одном из своих проектов я обрабатывал присылаемые изображения от пользователя.
Дело в том, что сколько не указывай требования к тем же аватарам, все равно пользователи присылают что угодно.

Поэтому я произвел следующий набор манипуляций:

  1. Проверка расширения
  2. Проверка mime-type
  3. Создание нового изображения из полученного файла
  4. Обрезка и масштабирование картинки, сохранение нового файла

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

спустя 3 часа 58 минут [обр] Амир(0/4)[досье]
Филипп Ткачев[досье], спасибо. Примерно так и делаю.
Powered by POEM™ Engine Copyright © 2002-2005