Como você pode evitar a navegação direta a uma imagem em um diretório web?

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

  •  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.

Foi útil?

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.

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