Como limitar o download do sistema de arquivos via navegador apenas através do meu aplicativo da web

StackOverflow https://stackoverflow.com/questions/1979268

Pergunta

Preciso da melhor maneira de evitar o acesso aos arquivos do DOC quando não é o meu aplicativo da Web; por exemplo, preciso que alguns arquivos sejam ocultos de mecanismos de pesquisa ou usuários públicos e apenas usuários privados podem alcançá -los e baixá -los.

Eu gostaria de salvar os arquivos no sistema de arquivos e não no banco de dados para não aumentar o uso do banco de dados.

Foi útil?

Solução

Você pode armazenar seus arquivos no sistema de arquivos, em um diretório que não pode ser acessado por meio de um URL (como um irmão do seu diretório da web root). Isso impedirá o acesso direto.

Em seguida, escreva um script PHP que, quando consultado para um determinado arquivo, verificará se o usuário pode acessar esse arquivo e enviá -lo com readfile (juntamente com header para o tipo de conteúdo e disposição de conteúdo).

Outras dicas

Quando você diz "usuários privados", só estou assumindo que isso significa que esses usuários são autenticados de alguma forma. Você pode armazenar esses arquivos fora do diretório da Web e servir -os via PHP/PERL/YOUA_FAVORITE_PROGRAMMING_LANGUE.

Um link pode levar a um script que verifica se esse usuário é autenticado, se assim for, sirva o arquivo por meio do script.

No PHP, depois de autenticar o usuário, você pode usar:

header('Content-disposition: attachment; filename=movie.mpg');
header('Content-type: video/mpeg');
readfile('/full/path/to/your/files/movie.mpg');

Lembre -se de fazer esse diretório fora do seu Webroot e definir as permissões para o mesmo usuário que seus scripts funcionam como (ninguém, geralmente sob o Apache).

Robots.txt é uma maneira de bloquear/permitir certos agentes de usuário HTTP. Mas não é a maneira mais segura. Você pode usar a autenticação básica para deixar seu aplicativo da web login.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top