none
Acesso a imagens apenas via codebehind, bloqueando demais canais. RRS feed

  • Pergunta

  • Olá pessoal,

    Quero que as imagens sejam mostradas apenas se chamadas via codebehind, não permitindo que sejam visualizadas se chamadas de outro local.

    Por exemplo, se o usuário acessar a página xyz.aspx que contém o código abaixo vai mostrar a imagem normalmente:
    ImagemTeste.ImageUrl = "~/Imagens/imagemteste.gif";

    Porém, se tentar acessar a imagem digitando a url no browser (www.abc.com.br/imagens/imagemteste.gif) gere erro ou pelo menos não retorne a imagem.

    Alguém sabe como fazer?

    O mais próximo que consegui foi implementar um httphandler e um httpmodule com urlreferrer.
    Porém, diz que urlreferrer não é muito confiável pois algums browsers apagam essa info do header.

    Valeu

    terça-feira, 26 de março de 2013 18:59

Respostas

Todas as Respostas

  • Cara,

    Você quer uma solução mais simples, salve as suas imagens no banco de dados e não precisará ter mais diretório físico para controlar isso eliminando o seu problema também.


    Atenciosamente, Samuel dos Anjos

    terça-feira, 26 de março de 2013 20:21
  • É muita imagem. Ia pesar demais no bd. Preferia manter em diretório.
    terça-feira, 26 de março de 2013 20:36
  • Cara,

    http://social.msdn.microsoft.com/forums/pt-BR/webgeralpt/thread/ad4a07c4-e18b-442b-8749-d6a50b16d38b


    Atenciosamente, Samuel dos Anjos

    terça-feira, 26 de março de 2013 21:40
  • O que tenho é um sistema web com diversos usuários autenticados e um diretório onde constam as imagens.
    Cada usuário deve poder visualizar apenas as imagens que tem permissão, não todas.
    A questão é que depois de autenticado, se um usuário digitar a url da imagem no browser(www.abc.com.br/imagens/imagemteste.gif), consegue acessar até mesma aquelas que não tem permissão.
    Tem alguma forma de implementar essa segurança que não seja colocando as imagens no banco de dados?
    São diversos novos usuários e imagens entrando no sistema constantemente.

    Obrigado.

    quinta-feira, 28 de março de 2013 17:57
  • Cara,

    Por se tratar de um único diretório com diversas imagens que nem todos podem ter as mesmas permissões para determinadas imagens, se realmente não for trabalhar com o banco de dados que acho que seria a forma mais ideal e fácil de se fazer isso a sua resposta é:

    Active Directory

    Essa é a única forma de gerenciar o que cada usuário pode ver ou não com permissões específicas para cada arquivo de imagem.

    http://www.linhadecodigo.com.br/artigo/2422/o-que-e-o-active-directory.aspx

    http://www.linhadecodigo.com.br/artigo/3006/conceder-permissoes-para-usuario-restrito-em-servicos-do-windows.aspx

    http://msdn.microsoft.com/pt-br/library/vstudio/as2f1fez.aspx

    http://msdn.microsoft.com/pt-br/library/system.web.security.authorizationstoreroleprovider.aspx


    Atenciosamente, Samuel dos Anjos

    quinta-feira, 28 de março de 2013 18:16
  • Não tem como fazer isso porque é transparente para o servidor web enviar arquivos de recurso.
    sexta-feira, 29 de março de 2013 12:56