Я создаю систему, которая в какой-то момент будет использовать просмотр 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>