Como você pode evitar a navegação direta a uma imagem em um diretório web?
-
03-07-2019 - |
Pergunta
Estou criando uma galeria de imagens site que você tem que fazer login para acesso. O site irá usar sessões para manter o controle de usuários e senhas. Logado usuários serão capazes de procurar imagens e ver os resultados. Presumivelmente, isso significa que eu vou estar colocando imagens em um diretório web. Como faço para manter não-registrada em pessoas de ser capaz de navegar diretamente para uma imagem neste diretório?
Este é baseado em PHP, com o MySQL.
Solução
Verifique se há um cabeçalho de referência, e exigem que seja do seu site. Você também pode verificar que os cookies são enviados para você (que está logado).
Sua melhor aposta é, então, ter PHP buscar as imagens a partir de um fora localização do seu dir web.
Além disso, confira o comentário string:. Utilizando mod_rewrite pode fazer tudo isso diretamente do apache
Outras dicas
Coloque as imagens em uma pasta que não é acessível através de uma URL direta, e ter o programa servir a imagem diretamente
Não coloque as imagens em um diretório navegável. Melhor ainda, armazená-los fora do seu webroot. Colocar algum tipo de manipulador personalizado no lugar que irá carregar a imagem solicitadas e enviá-lo de volta para o usuário, após o usuário ter sido validados e verificados. Isso também irá evitar hot-linking das suas imagens.
Coloque as imagens em uma pasta fora do site, e usar uma página proxy para enviar a imagem para o navegador. Faça uma página que você usar como url em sua tag img, algo como:
getimage.php? Id = 8783475
Na página que você verifique se o usuário está conectado, e determinar a partir dos parâmetros que imagem para enviar. Defina o tipo de conteúdo da página para o tipo que corresponde a imagem, por exemplo "image / jpeg", leia o arquivo de imagem e enviar diretamente para o fluxo de resposta.
Se as suas imagens não são muito grandes, há uma maneira muito inteligente de protegê-los contra acesso não autorizado. Você pode BASE64 econding, o mesmo que Outlook Express anexo codificação, e colocar o código dentro de uma página ASP que usa o objeto SESSION. VER tutoriais sobre ASP Para mais informações sobre este assunto. Quando um usuário acessa a página, o código verifica asp se o usuário está autheticated. Se ele não é o script interrompe o código da página, e não visualizar a imagem. Se o usuário é autenticado os scripts cargas a página inteira ea base64 é reconstruída em uma imagem visível. O truque aqui é que você não tem um diretório com imagens simples na mesma, mas a imagem é codificada na página html, por isso é reconstruído em tempo real pelo script. Desde que você não tem imagens no diretório, ninguém pode tentar apontar o navegador diretamente para eles, uma vez que thay simplesmente não existem. Você pode usar este site para codificar as imagens:
http://www.motobit.com/util/base64-decoder- encoder.asp
Em seguida, você tem que "chamada" a imagem no código HTML usando esta tag:
img src = "dados: image / gif; base64, ................................... ........... (aqui você colocar o código obtido a partir do site acima) ...............
Está pronto! Suas imagens não são acessíveis se o usuário não está logado.
Não deixe povos acessar sua imagem diretórios diretamente.
Deixe sua galeria de imagem de software encaminhar a imagem ao utilizador. Verifique as credenciais necessárias.