Estoy construyendo un sistema que en algún momento utiliza la visualización de archivos PDF.
Estos archivos deben bloquearse para que nadie pueda verlos fuera del sistema. Esto significa que no se puede acceder directamente a los archivos y solo el servidor accede a ellos para mostrárselos al usuario.
Tengo una carpeta documents
que se parece a esta:
.htaccess
test.pdf
test.txt
En mi .htaccess tengo lo siguiente:
Order Allow,Deny
Deny from all
Esto efectivamente me impide acceder al archivo directamente yendo aexample.com/documents/test.pdf
Sin embargo, todavía necesito que el archivo se pueda ver dentro de mi sistema, pero tampoco puedo cargarlo con la URL directa. Así que creé un archivo justo fuera de mi documents
carpeta llamado load_pdf.php
. Este archivo se ve así:
header("Content-Type: application/pdf");
$pdf = file_get_contents('documents/test.pdf');
echo $pdf;
¡Y funciona! Puedo incrustar el archivo así:
<embed src="/load_pdf.php"></embed>
Sin embargo, hay un problema. Cualquiera puede cargarlo load_pdf.php
directamente en su navegador, mostrando así el documento PDF al que no se supone que sea accesible.
¿Hay alguna forma de impedir load_pdf.php
que se cargue a menos que el servidor lo cargue en mi <embed>
elemento?
Respuesta1
Puede especificar la dirección IP desde la que desea acceder a los archivos o, si ha iniciado sesión, utilice una ID de correo electrónico particular para permitir la visualización.
Todo esto lo puedes especificar al inicio de tu load_pdf.php
Respuesta2
No.
https://stackoverflow.com/questions/4930914/prevent-pdf-file-from-downloading-and-printing
En última instancia necesitarás:
Crear imágenes para cada página
Preséntelos al usuario en la web a través de su propia interfaz (html, flash, etc.)
Respuesta3
Puede hacer esto siguiendo: -
<Files *test.pdf>
Order allow,deny
Deny from all
</Files>
<Files *test.txt>
Order allow,deny
Deny from all
</Files>