Permitir que solo el servidor acceda a un archivo

Permitir que solo el servidor acceda a un archivo

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 documentsque 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 documentscarpeta 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.phpdirectamente en su navegador, mostrando así el documento PDF al que no se supone que sea accesible.

¿Hay alguna forma de impedir load_pdf.phpque 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>

información relacionada