Intereting Posts
Разбирайте таблицу внешнего веб-сайта как генерировать 8 бит crc в php Неустранимая ошибка: допустимый размер памяти 134217728 байтов исчерпан (CodeIgniter + XML-RPC) Поиск в Twitter по hashtag example API v1.1 рекурсивный обход дерева – Как отслеживать уровень рекурсии? MySql: если существует значение UPDATE else INSERT Amazon MarketplaceWebServiceOrders запрашивает внезапное сбои, PHP curl дает SSL CA cert error? Добавление программно вкладки пользовательских настроек в данные продукта администратора в WooCommerce Самый простой способ выполнить локальный файл из Firefox? как удалить множественные слэши в URI с помощью «PREG» или «HTACCESS» Как получить информацию о пользователе в группе безопасности Active Directory с использованием LDAP и PHP Простая система рейтинга / неприятия в php и MySQL Создание JSON в PHP с использованием базы данных Могут ли PHP и ASP.Net работать вместе на одном веб-сайте в IIS 7.5? как проверить, включен ли завиток или отключен

Хороший способ безопасного загрузки файлов в PHP

Написание небольшого приложения, которое ( среди прочего ) позволяет пользователям загружать файл ( например, изображение, .doc или текстовый файл ) в качестве части их публикации / отправки.

Наш прототип просто выгружает файл в / {app_root} / files / , но, конечно, любой может дойти до него, даже если он не вошел в систему или не использовал систему. Цель состоит в том, чтобы предоставить доступ ( просмотр доступа ) к файлам, если пользователь вошел в систему, и фактически имеет доступ к сообщению, к которому принадлежит файл.

Короче говоря, я ищу хороший способ сделать это.

Я думаю о создании папки за пределами папки / web / ( http ), а затем PHP-рендеринг ее каким-то образом использует comm () или, возможно, просто выгружает файл в базу данных? Однако я никогда не делал этого.

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

Solutions Collecting From Web of "Хороший способ безопасного загрузки файлов в PHP"

Вы должны сделать следующее:

  1. Переместите все файлы из веб-узла. Вы можете отключить доступ к папке с .htaccess, но это не стоит проблем и потенциального риска для безопасности. Просто переместите его там.
  2. Сохраните таблицу загруженных файлов, сохранив там исходное имя пользователя. Переименуйте файл в $id.$ext и т. Д. Короче говоря, вы не хотите использовать имя пользователя в вашей системе.
  3. У вас есть сценарий, download.php или что-то еще, получите идентификатор файла, проверьте, кто входит в систему, и если все проверяется, извлекайте файл, прочитайте его в браузере и отправьте соответствующие заголовки загрузки.

Эти заголовки будут примерно такими:

 header('Content-type: application/octet-stream'); header('Content-disposition: attachment; filename=usersuppliedname.txt'); header("Content-Length: " . filesize('../safefiles/1.txt')); header("Content-Transfer-Encoding: binary"); readfile('../safefiles/1.txt'); exit; 

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