Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: безопасное хранение данных.
Форумы портала PHP.SU » » Вопросы новичков » безопасное хранение данных.

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

1. Zuldek - 13 Января, 2012 - 11:33:36 - перейти к сообщению
принимаю от юзера в форме номер телефона и email

потом должен выслать ему номер телефона при указании emailа в другой форме.

Информация должна безопасно храниться в MySQL. Злоумышленники не должны видеть электронные адреса и телефоны пользователей, даже если получат доступ к исходникам или полный доступ к базе данных.

Эта часть задачи ввела в ступор.

По логике, я могу принимать эти значения и записывать их в виде хэшей. но я их хрен потом расшифрую, смогу только сверить значение мыла на соответствие хешу но телефон брать откуда?
Получается что телефоны в базе всеравно должны храниться в чистом виде (мыло берем из формы с просьбой напомнить номер телефона), а в хеше я могу хранить только пароль юзера?
В задаче и в форме вообще не упоминается про пароль юзера... видимо это не главное
2. EuGen - 13 Января, 2012 - 11:47:24 - перейти к сообщению
Если телефон нужен только для того, чтобы подтверждать что-то от пользователей, то его тоже можно записывать в хеше (например, при восстановлении пароля пользователь в форме указывает телефон, сравниваемый затем с хешем)
3. Zuldek - 13 Января, 2012 - 11:51:40 - перейти к сообщению
EuGen пишет:
Если телефон нужен только для того, чтобы подтверждать что-то от пользователей, то его тоже можно записывать в хеше (например, при восстановлении пароля пользователь в форме указывает телефон, сравниваемый затем с хешем)


в задаче картинка формы с двумя полями 1. телефон 2. email 3. кнопка сабмит.
2 и последняя форма- 1 поле для ввода мыла, при вводе мыла надо выслать юзеру его телефон. больше ни слова.

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

А можно шифровать номер телефона используя в роли шифра само значение мыла?... Если хеш введенного мыла совпал с хешем мыла в базе, то на основе введенного значения мыла расшифровываем номер телефона. Естественно до этого номер телефона должен быть зашифрован на основе мыла. Вопрос как это сделать?
ап. библиотеками пользоваться нельзя
Вопрос зачем спрашивать не стоит это просто задача на php.
5. snikers987 - 13 Января, 2012 - 12:36:54 - перейти к сообщению
Встречал такой проект на веблансе) По моему это параноя..
6. BAPBAP13 - 30 Июня, 2012 - 17:07:06 - перейти к сообщению
http://www[dot]domfins[dot]com/

И накакая это не параноя, если что-то создал - нужно это защищать Улыбка
7. nameveiof - 09 Апреля, 2013 - 14:59:46 - перейти к сообщению
Чтобы не создавать тему запощу здесь, проблема та же самая, но не про 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, чтобы злоумышленник не мог или труднее было взломать сайт например исполнив загруженные файлы с внедрённым кодом.

Проверка на клиентской стороне конечно ничего не даёт её легко обойти. Она только для удобства клиентов.
8. Zuldek - 09 Апреля, 2013 - 15:18:08 - перейти к сообщению
Я так понял вы визуализируете как-то pdf у себя на сайте или просто даете загружать и отдаете клиентам загруженные файлы?
9. nameveiof - 09 Апреля, 2013 - 15:54:55 - перейти к сообщению
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 оставляет у себя на хранение оба файла.

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

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

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

И поскольку неопытен спрашиваю нормально ли это, вдруг я что то не учёл есть какие то подводные камни.

 

Powered by ExBB FM 1.0 RC1