PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (1): [1]

> Найдено сообщений: 2
nameveiof Отправлено: 09 Апреля, 2013 - 15:54:55 • Тема: безопасное хранение данных. • Форум: Вопросы новичков

Ответов: 8
Просмотров: 576
Zuldek пишет:
Я так понял вы визуализируете как-то pdf у себя на сайте или просто даете загружать и отдаете клиентам загруженные файлы?


спасибо за ответ

pdf генерируется с помощью tcpdf и сохраняется на сервер


Сейчас так (в случае если юзер выгрузил файл через форму)
Оба файла тупо сохраняются в папке "upload" (pdf + выгруженный как есть)
им добавляется имя порядковый номер и дата

Zakaz2013_04_07___09_40_55.pdf
#_0000000_#_2013-04-03_#_qweqweqwe.doc

потом php скрипт берёт эти файлы и
1 выдаёт юзеру pdf через браузер, как файл, чтобы сохранил
2 высылается письмо с приложениями менеджеру на почту pdf + юзерский файл
3 оставляет у себя на хранение оба файла.

Конечно в таком виде хранить нельзя.

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

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

И поскольку неопытен спрашиваю нормально ли это, вдруг я что то не учёл есть какие то подводные камни.
nameveiof Отправлено: 09 Апреля, 2013 - 14:59:46 • Тема: безопасное хранение данных. • Форум: Вопросы новичков

Ответов: 8
Просмотров: 576
Чтобы не создавать тему запощу здесь, проблема та же самая, но не про MySQL.

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

http://22[dot]p[dot]ht/1/page48[dot]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 в ней


CODE (text):
скопировать код в буфер обмена
  1.  deny from all
  2.  
  3.  <Files>
  4.  order deny,allow
  5.  
  6.  allow from all
  7.  
  8.  </Files>
  9.  php_flag engine 0
  10.  AddType "text/html" .php .cgi .pl .fcgi .fpl .phtml .shtml .php2 .php3 .php4 .php5 .asp .jsp
  11.  





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

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

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

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

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB