Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 10873|Ответ: 0

[Веб] Контроль доступа к файлам с помощью механизма X-Sendfile от Nginx (php-версия)

[Скопировать ссылку]
Опубликовано 07.11.2018 10:05:15 | | |
BBS или сайты часто имеют только у вас разрешение просматривать эту страницу или скачать этот ресурс. Несколько дней назад я посетил сервер nginx, как реализовать этот контроль файлов, используя x-sendfile.

1. Что такое X-Sendfile?

X-Sendfile — это механизм, который передаёт запросы на загрузку файлов от бэкенд-приложения на фронтенд-веб-сервер для обработки, что может значительно повысить эффективность сервера, снимая нагрузку на бэкенд-программу читать и обрабатывать файл для обработки отправки, особенно при больших загрузках файлов.

X-Sendfile реализуется через конкретный HTTP-заголовок: указание адреса файла в заголовке X-Sendfile для рекламы на фронтенд-веб-сервере. Когда веб-сервер обнаруживает этот заголовок, отправленный бэкендом, он игнорирует другие выводы бэкенда и использует собственные компоненты (включая оптимизации, такие как заголовки кэша и повторное подключение по точкам остановки) для отправки файла пользователю.

Однако перед использованием X-Sendfile важно понимать, что это не стандартная функция и по умолчанию отключена большинством веб-серверов. Разные веб-серверы имеют разные реализации, включая разные форматы заголовков X-Sendfile. В случае неправильной настройки пользователи могут скачать файл размером 0 байт.

Использование X-Sendfile позволит скачивать файлы в невеб-каталогах (например, /root/), даже если файл отключён под защитой .htaccess.

Разные веб-серверы реализуют разные HTTP-заголовки

Заголовок SENDFILE
Используемый веб-сервер
X-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Accel-RedirectНгинкс, чероки

Недостаток использования X-SendFile в том, что вы теряете контроль над механизмом передачи файлов. Например, если вы хотите выполнить определённые действия после загрузки файла, например, позволить пользователю скачать файл только один раз, этот X-Sendfile не сможет этого сделать, потому что php-скрипт в фоне не знает, успешная ли загрузка.

2. Как использовать NGINX?

Nginx поддерживает эту функцию по умолчанию и не требует загрузки дополнительных модулей. Просто реализация немного отличается, и HTTP-заголовок, который нужно отправлять, называется X-Accel-Redirect. Кроме того, в конфигурационном файле необходимо сделать следующие настройки

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

3. Как пользоваться PHP-программами?


Если добавить заголовок X-Accel-Redirect, пользователь скачает файл по пути /game. Наш контроль прав на файл реализован.

Официальное введение в документацию:Вход по гиперссылке виден.




Предыдущий:Любовь, брак и семья, первая половина месяца + 18 июня
Следующий:Муковисцидоз — это первый взгляд на всю сеть, который самостоятельно прицеливается и стабилизируется в течение одного месяца
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com