Архивировать выгруженные файлы для безопасного хранения. Правильно ли.

nameveiof

Новичок
кратко:
Если существует форма аплоада то, как известно, плохо продуманная обработка выгруженных пользователем файлов подвергает опасности сайт. Могут выгрузить файлы с вредоносным кодом.
Хорошее ли решение для безопасности -- выгруженные файлы в папке upload сжимать в zip и давать своё имя + добавить рэндомный набор символов в конце (5 знаков допустим)

http://22.p.ht/1/page48.html
вот страница, ещё буду переделывать.
----------------------------------------------------------
подробно:
Делаю страницу конструктор цены с формой выгрузки файлов. (файлы можно и не выгружать здесь я о варианте если выгрузят)

При нажатии отправить все данные передаются php скрипту через post

В форме выгрузки имя файла проверяется javascriptом на клиентской части на не валидные символы,
и на разрешённое расширение.

при нажатии субмита делается следующее:

1 формируется pdf в котором записаны результаты выбора
2 принимается выгруженный файл

3 pdf выдаётся юзеру с именем по которому не определить что складывается в upload например "Zakaz_#01_Vasya_pupkin.pdf"
4 выгруженный файл + pdf отправляются в почту менеджеру магазина

5 и главное выгруженный файл + pdf архивируются вместе (zip или rar) им даётся имя номер заказа_дата_время_рэндомные символы.zip
пример
"00001__09_04_2013__11_02_b3sjk.zip"

Вот такие файлы будут в папке upload.
Вопрос.
Такие меры которые я предпринимаю с точки зрения безопасности надёжны, достаточны, правильны, что то ещё можно предпринять?

Ещё думаю правильно добавить в папке upload htacess с директивой отключающей выполнение php в ней


PHP:
 deny from all 
  
 <Files> 
 order deny,allow 
  
 allow from all 
  
 </Files> 
 php_flag engine 0 
 AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp



и урезать права файлу .htacess по минимому 444 или 400
Естественно и самые минимальные для выполнения операций выставить права в папке upload

Я бы вынес на отдельный поддомен файлы, но такой возможности у заказчика нет.

----------------------------------------------------------
Задача всего этого сделать безопасную выгрузку файлов в папку uploads, чтобы злоумышленник не мог или труднее было взломать сайт например исполнив загруженные файлы с внедрённым кодом.

Проверка на клиентской стороне конечно ничего не даёт её легко обойти. Она только для удобства клиентов.
 

hell0w0rd

Продвинутый новичок
Нет, не надежны. Можно поменять в файле расширение и даже мета-информацию. Тем более проверка js-ом.
Вам нужно запретить исполнение файлов из папки, в которую вы загружаете файлы. Зачем архивировать - я не знаю, если потом постоянно будете разархивировать - бред. Если будете пользователю отдавать зип-архив - можно.
Как по мне - проще переиминовать файл, банально хэш от сессии+времени.
 

С.

Продвинутый новичок
Если файлы складываются в недоступную из веба директорий, то вообще нет необходимости ни в каких особых мерах защиты.

Если файлы сохранются в открытой директории, то достаточно всего лишь одного -- "безопасное" расширение файла. Все остальное -- туфта.
 

nameveiof

Новичок
Спасибо за ответы.
GusakovNick
Я в конце говорил что любая проверка до сервера не является вообще никакой защитой,
только для удобства юзеров, а послать скриптом можно всё что угодно, с каким угодно расширением и типом файла.

Это будет для удобства конторы производящей печи, чтобы менеджер их мог зайти в папку upload и просмотреть заказы. По моему удобно. И чтобы безопасно хранилось.

С.
А это вообще нормально что папки бывают открыты?
Я не опытен, может такое надо иногда, поясните?

По-моему это грубейшее нарушение безопасности. Всё равно что квартиру открытой оставлять.
(В моём примере по ссылке просто тестовый бесплатный хостинг, его не жалко.)

Есть много косяков с этим безопасным расширением.
Непредсказуемые натройки php, и глюки. Вдруг настроят так что jpg будут выполнятся.
(я ведь потом на хостинг конторы это перенесу)
Код в картинках, фальшивые mime. Двойные расширения.

Естественно необходимый минимум я отфильтрую. Разрешённые расширения и двойные расширения.
 

hell0w0rd

Продвинутый новичок
nameveiof
Если поток не большой можно дейтсвительно архивировать, хотя это не обязательно + отправлять по почте менеджеру сразу)
 

nameveiof

Новичок
До меня дошло что так легче досить нагружая сервер архивироавнием.

Отправять по почте они так попросили сделать.
 
Сверху