Permitir que um arquivo seja acessado apenas pelo servidor

Permitir que um arquivo seja acessado apenas pelo servidor

Estou construindo um sistema que em algum momento utiliza a visualização de arquivos PDF.

Esses arquivos precisam ser bloqueados para que ninguém possa visualizá-los fora do sistema. Isso significa que os arquivos não podem ser acessados ​​diretamente, e apenas acessados ​​pelo servidor para serem exibidos ao usuário.

Eu tenho uma pasta documentsque se parece com isso:

.htaccess
test.pdf
test.txt

No meu .htaccess, tenho o seguinte:

Order Allow,Deny
Deny from all

Isso efetivamente me impede de acessar o arquivo diretamente, indo paraexample.com/documents/test.pdf

Ainda preciso que o arquivo possa ser visualizado dentro do meu sistema, mas também não é possível carregá-lo com o URL direto. Então criei um arquivo fora da minha documentspasta chamado load_pdf.php. Este arquivo se parece com isto:

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

E funciona! Posso incorporar o arquivo assim:

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

No entanto, há um problema. Qualquer pessoa pode carregar load_pdf.phpdiretamente no navegador, exibindo assim o documento PDF que não deveria estar acessível.

Existe alguma maneira de bloquear load_pdf.phpo carregamento, a menos que esteja sendo carregado pelo servidor no meu <embed>elemento?

Responder1

Você pode especificar o endereço IP do qual deseja acessar os arquivos ou, se tiver login, use um ID de e-mail específico para permitir a visualização.

Tudo isso você pode especificar no início do seu load_pdf.php

Responder2

Não.

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

Em última análise, você precisará:

  • Crie imagens para cada página

  • Apresente-os ao usuário na web por meio de sua própria interface (html, flash etc.)

Responder3

Você pode fazer isso seguindo: -

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

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

informação relacionada