Назад | Перейти на главную страницу

Защита загрузки больших файлов через Apache / PHP

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

Кажется, есть несколько способов сделать это:

  1. Передайте файл через скрипт PHP, чтобы исходное местоположение не отображалось (https://stackoverflow.com/questions/55138561/php-proxy-to-download-files). Я реализовал это, он работает, но требует значительных ресурсов (весь файл должен быть обработан с помощью сценария PHP). Он также не будет работать с очень большими файлами через мой текущий хостинг (Bluehost), они завершают сценарии PHP через 10 минут, я бы оценил, что таким образом я мог бы получить максимум 2 ГБ (и не надежно для всех). Мои файлы имеют размер от 2 до 4 ГБ.
  2. Используйте mod_xsendfile (Как мне защитить большие загрузки файлов через PHP и / или Apache?). Работает аналогично варианту 1, за исключением того, что работа передается Apache, поэтому меньше ресурсов и нет проблем с тайм-аутом. В настоящее время мне недоступен (виртуальный хостинг), мне нужно повысить уровень обслуживания или найти альтернативный хостинг.
  3. Перенаправить загрузку на скрытый URL (https://superuser.com/questions/1369856/redirect-download-to-a-different-place-but-keep-the-url). Работает аналогично варианту 2, за исключением того, что URL-адрес в конечном итоге открыт и не защищен - пользователи могли бы определить, где находится файл, и получить к нему прямой доступ. Мне может на какое-то время сойти с рук это решение, но в конечном итоге это кажется не очень хорошей идеей.

Мой первый вопрос: все ли варианты? Есть ли другое решение, которое я пропустил? Обратите внимание, что я не привязан к PHP, если требуется что-то еще, хотя это казалось скорее проблемой настройки сервера, чем чем-либо, зависящим от используемого языка.

Если они считаются единственными решениями, кажется, что вариант 2 - это выбор. Однако кажется, что mod_xsendfile не поддерживался какое-то время, и это уже ставилось под сомнение (Mod_xsendfile устарел?). Но после долгих поисков этот метод все еще кажется рекомендуемым. Нет ли более нового или стандартизированного механизма для выполнения этой задачи?

Если мы по-прежнему привязаны к варианту 2, я рассмотрю вопрос об обновлении хостинга (или перемещении хостов, если потребности лучше обслуживаются в другом месте - HostGator стремился предоставить больше возможностей для этого по той же цене, хотя я никогда не использовал их). Я действительно смотрел на сторонних поставщиков для размещения файлов для загрузки, но при расследовании показалось, что большинство из них эффективно предоставляют интерфейсные интерфейсы для варианта 2, и все, на что я смотрел, было дороже, чем просто платить за более высокий уровень обслуживания на моем существующий хостинг, и делаю это сам.