Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как безопасно хранить файлы на сервере???
 
 автор: Shey   (22.04.2008 в 19:27)   письмо автору
 
 

Привет всем господам профи (новичков прошу не беспокоить). Мне нужна помощь. Вопрос в том, как мне безопасно хранить файлы на серваке. Примерно знаю, как это делается:
1)Сохранить файл с придуманным именем и расширением (например, юзер хочет закачать файл some_image.jpg или some.exe, а на серваке их хранить в виде 0001.file и 0002.file соотвестственно)
2)Затем, надо во-первых, чтобы файл в браузере (как мне надо, то есть юзеры закачивают файлы и скачивают закаченные) отображался с таким же именем и расширением, с каким его закачивал юзер. Ну а затем, соответственно скачать.

Насчёт пункта (2), во-первых как мне определить тип уже сохраненного файла? Есть такой вариант: при сохранении файла хранить в какой-нибудь таблице имя и тип файла (тип при загрузке храниться в $_FILES[name][type']). Создать два массива, в одном все известные типы, в другом соответствующие им расширения. Потом просто находить соответствующее расширение по типу и таким образом у нас получиться имя исходного файла. Верна ли теория?

Во-вторых, самое важное, как мне файл, сохр. на серваке "превратить" в исходный (тот, который изначально закачивался, например text.txt или movie.mp3) файл.

Очень прошу помочь. Если слишком много пидется писать, то хотя бы скажите, где можно это прочитать? Вся надежда на Вас.
НЕУЖЕЛИ ВСЁ ТАК ПЛОХО???

   
 
 автор: boolean   (23.04.2008 в 00:15)   письмо автору
 
   для: Shey   (22.04.2008 в 19:27)
 

Доброго времени суток!

Думаю теория с хранением типа данных возможна.

А вот на счет преврашения файлов думаю надо поработать с функцией system(),или подобными ей.....

   
 
 автор: Atheist   (23.04.2008 в 00:21)   письмо автору
 
   для: Shey   (22.04.2008 в 19:27)
 

> во-первых как мне определить тип уже сохраненного файла?
Можно для известных расширений подставлять свой MIME из таблицы, а для неизвестных брать MIME, полученный от юзера при закачке.

> самое важное, как мне файл, сохр. на серваке "превратить" в исходный
Просто послать нужные загловки:
<?php
header
('Content-Length: ' $filesize); 
header('Content-Disposition: attachment; filename="filename.ext"');  
header('Content-type: application/octet-stream'); 
?>


Тут заголовки для файла "filename.ext", размера $filesize и MIME "application/octet-stream".

   
 
 автор: cheops   (23.04.2008 в 11:42)   письмо автору
 
   для: Shey   (22.04.2008 в 19:27)
 

Не меняйте расширение, однако, в папку, где хранятся файлы поместите конфигурационный файл .htaccess следующего содержания
RemoveHandler .php .phtml .pl
AddType text/plain .php .phtm .htm .html .phtml .pl

Это предотвратит выполнение загруженных файлов на сервере.

   
 
 автор: mechanic   (23.04.2008 в 12:04)   письмо автору
 
   для: cheops   (23.04.2008 в 11:42)
 

если уж .pl, то до кучи и .cgi можно
а вообще, разве *.pl не только в cgi-bin может исполняться?

   
 
 автор: Atheist   (23.04.2008 в 12:20)   письмо автору
 
   для: mechanic   (23.04.2008 в 12:04)
 

> а вообще, разве *.pl не только в cgi-bin может исполняться?

Может, но при определенной настройке сервера.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования