2013-11-16 2 views
0

Я разрабатываю скрипт для захвата файлов небольшого размера (менее 1 МБ) от пользователя, которому заданы URL-адреса и сохраняются на моем сервере.Проблемы с безопасностью, позволяющие пользователям сохранять файлы с URL-адреса

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

Я попробовал некоторые ответы в Интернете, но все они обрабатывают весь файл. Для видеофайла 700 MB потребовалось пару минут, означает ли это процесс, связанный с моими серверными ресурсами?

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

Может кто-нибудь посоветует мне об этом?

+2

PHP имеет ['upload_max_filesize'] (http://www.php.net/manual/en/ini.core.php#ini.upload-max-filesize) и [' post_max_size'] (http: // www.php.net/manual/en/ini.core.php#ini.post-max-size), которые помогут решить вашу проблему - самая большая проблема заключается в том, чтобы убедиться, что пользователь не публикует ничего вредоносного - исполняемый код, который может запускаться на вашем сервере. – Emissary

+0

Это отличный момент! Все, что мне нужно сделать, это изменить максимальный размер загрузки, а затем позаботиться о типах файлов в PHP. Благодарю. –

ответ

1

Это должно сделать трюк. Нет файлов больше 1 мегабайта не могут быть загружены

if($_FILES['file']['size'] < 1048576) { // This is one megabyte (in bytes) 
    // the file is within size restriction, continue 
} else { 
    // File is too large, return an error 
} 

Тогда вы могли бы использовать некоторые JavaScript, чтобы проверить размер файла перед загрузкой, но только помните, что вы не можете полагаться на него в целях безопасности.

-1

Ninja редактировать: Не хороший ответ в целях безопасности

вы можете проверить размер файла в JavaScript, так что вам не нужно, чтобы отправить его на сервер. Вы можете найти полное объяснение здесь: JavaScript file upload size validation

+2

Когда вопрос касается безопасности, проверка на стороне клиента не является хорошим ответом:/ – Emissary

+0

Правда, вы можете просто уклониться от файла и отправить любой файл с помощью простого сценария –

1

Здесь вы можете указать размер загружаемого файла. Нравится

<?php 
ini_set('post_max_size', '20K'); // If you need it like 10 MB , Set is as 10M 
ini_set('upload_max_filesize', '20K'); 
Смежные вопросы