Разрешить доступ к файлу только серверу

Разрешить доступ к файлу только серверу

Я создаю систему, которая в какой-то момент будет использовать просмотр PDF-файлов.

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

У меня есть папка documents, которая выглядит так:

.htaccess
test.pdf
test.txt

В моем .htaccess есть следующее:

Order Allow,Deny
Deny from all

Это фактически блокирует мне возможность доступа к файлу напрямую, перейдя по ссылкеexample.com/documents/test.pdf

Мне все еще нужно, чтобы файл был виден внутри моей системы, но она также не может загрузить его с помощью прямого URL. Поэтому я создал файл прямо за пределами моей documentsпапки под названием load_pdf.php. Этот файл выглядит так:

header("Content-Type: application/pdf");
$pdf = file_get_contents('documents/test.pdf');
echo $pdf;

И это работает! Я могу встроить файл вот так:

<embed src="/load_pdf.php"></embed>

Однако есть проблема. Любой может загрузить load_pdf.phpнапрямую в своем браузере, тем самым отобразив PDF-документ, который не должен быть доступен.

Есть ли способ заблокировать load_pdf.phpзагрузку, если только она не загружается сервером в моем <embed>элементе?

решение1

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

Все это вы можете указать в начале вашего load_pdf.php

решение2

Неа.

https://stackoverflow.com/questions/4930914/prevent-pdf-file-from-downloading-and-printing

В конечном итоге вам необходимо будет:

  • Создавайте изображения для каждой страницы

  • Представьте их пользователю в Интернете через свой собственный интерфейс (html, flash и т. д.)

решение3

Это можно сделать следующим образом:

<Files *test.pdf>
    Order allow,deny
    Deny from all
</Files>

<Files *test.txt>
    Order allow,deny
    Deny from all
</Files>

Связанный контент