2013-03-16 8 views
3

У меня есть сценарий, который загрузить файлы на сервер вот мой кодPHP File Upload безопасности

Когда пользователь загружает файл на сервер

  1. Мой сценарий переименовывает файл и сохранить детали в дБ.

  2. Я размещаю файлы вне веб-корня.

так мой подход безопасен?

+0

Пожалуйста, не используйте mysql_ * функции те deprricated проверить это http://meta.stackexchange.com/a/171640/176320 –

+0

@ranjith вы можете опубликовать этот мир кода, чтобы я мог работать с ним? потому что он отлично работает для меня. –

ответ

1

Вы должны сделать дополнительную проверку входных данных на файл, например:

-проверить размер файла

-проверить тип файла с "File Type распознаванью"

-check содержимого заголовком

Вы также можете проверить лучшие методы для загрузки файлов здесь: https://www.owasp.org/index.php/Unrestricted_File_Upload

не запускайте го e на вашем сервере.

проверить тип содержимого (я никогда не делал это сам кстати), вы можете попробовать soemthing как:

$file = "path2file"; 
$finfo = new finfo(FILEINFO_MIME); 
$type = $finfo->file($file); 
if(in_array($type,array("application/zip", "application/x-zip", .. whatever content types are ok...))) 
    //you passed 
+0

, пожалуйста, посмотрите, что он уже проверяет расширение $ ext = explode ('.', $ Files ['name'] [$ i]); $ ext = strtolower (end ($ ext)); то я также проверяю файлы mime type I, которые хранят эти данные в db. –

+0

Я сделал свое плохое, я обновил свой ответ после того, как увидел, что слишком – Tucker

+0

Можете ли вы показать мне пример для заголовка контента? поэтому я могу реализовать его –

1

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