Usuário com melhor resposta
Proteger pasta com arquivos .jpg

Pergunta
-
Bom dia ! não achei exatamente as respostas a minha questão no fórum.
Então, Tenho uma pasta que tenho que proteger e deixar que os usuários acessem unicamente logado.
Utilizo o seguinte;
<location path="Doc/Restrict/Image">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
Ele protege as páginas dentre da pasta, mas as imagens são facilmente acessadas via browser;www.meusite.com.br/Doc/Restict/Image/Img001.jpg
Existe maneira de proteger este tipo de arquivos ? ou só protege páginas de programa ?
obrigado !
Dudu
Respostas
-
Dudu,
Sabe o que você pode fazer, é criar uma pasta restrita fora da sua aplicação do tipo thema.
Fazendo isso nenhum cliente de fora da sua aplicação irá conseguir ver as imagens, porque receberá um erro de falta de permissão para acessar o diretório, no entando, você conseguirá acessar via seu código c#, acredito que essa solução seja a melhor e resolve seu problema de maneira simples, lembrando que esse recurso foi criado justamente evitar que pessoas roubassem themes das aplicações.
Isso é comumente utilizado para banco de dados você cria um banco de dedas e coloca dentro do App_Code para ninguem roubar suas informações.
Resolvido certo?
Doc/Theme/Image = Access Denied
Se você for implementar dessa forma que eu coloquei, por favor não esqueça de marcar como resposta válida.
Abraços,
Leandro Rodrigues
Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida
- Editado Leandro Rodrigues quarta-feira, 7 de março de 2012 02:50 erro digitação
- Sugerido como Resposta Augusto.Silva quinta-feira, 8 de março de 2012 00:27
- Marcado como Resposta Harley Araujo quinta-feira, 8 de março de 2012 10:46
-
Faz com handler mesmo
http://forums.asp.net/t/1644430.aspx/1
http://www.codeproject.com/Articles/39158/Protect-Files-and-Folders-Using-HttpHandlers-in-AS
Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
- Sugerido como Resposta Augusto.Silva quinta-feira, 8 de março de 2012 00:26
- Marcado como Resposta Harley Araujo quinta-feira, 8 de março de 2012 10:46
Todas as Respostas
-
-
Dudu,
Essa pergunta já foi respondida no forum, é isso que você deseja fazer observe o link.
http://social.msdn.microsoft.com/Forums/pt/webgeralpt/thread/cfdb63ba-9b86-439e-92fd-e29f38339a0a
Abraços,
Leandro Rodrigues
Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida
-
Obrigado Samuel e Leandro,
Vou explicar com mais detalhes a necessidade; Estou fazendo um site para um fotógrafo, que tem um banco de imagens com milhares de fotos. Uso o arquivo .jpg para mostrar thumbnails e previews das imagens em distintas páginas, todas essas imagens estão em baixa resolução, o seja 500 pixel o lado maior e 72 dpi para os previews e bem menor para os thumbnails.
Como o sistema permite que os clientes com cadastro aprovado possam fazer o download das imagens em alta resolução (.jpg com uns 9 MB. em media) eu tenho que cuidar muito onde colocarei essas imagens em alta. Esconder endereço ou colocar caminhos criptografados não é o problema. O problema é que as imagens estão no servidor num endereço, por exemplo; www.meusite.com.br/Acervo/Private/Alta/, e se essa pasta não fica protegida de alguma maneira qualquer um pode “adivinhar” ou achar o endereço e baixar diretamente pelo navegador.
Tal vez exista uma solução simples que neste momento não consigo lembrar se já vi em algum fórum ou site.A solução que Samuel comentou não sei se seria muito conveniente, (não domino muito e pouco usei os handlers, só com algumas DLL’s) acho que a performance ficaria comprometida, já que uso o arquivo jpg em todo o site. Esconder o endereço como sugeriu o Leandro não seria problema, mas continuaria o endereço da pasta “liberado” para quem fuçar um pouco as pastas via browser. O grande medo do fotógrafo é esse, a disponibilidade das imagens dentro da estrutura de pastas.
O ideal seria mesmo proteger a pasta, mas com o <location path="Doc/Restrict/Image">não protege mesmo. bloquear no IIS não funciona porque bloqueia todas as jpg’s.
Vou continuar procurando e aguardo alguma “pista” para encontrar uma solução.
Obrigado !
Dudu
- Editado Dudu da Copa quarta-feira, 7 de março de 2012 00:57
-
Dudu,
Sabe o que você pode fazer, é criar uma pasta restrita fora da sua aplicação do tipo thema.
Fazendo isso nenhum cliente de fora da sua aplicação irá conseguir ver as imagens, porque receberá um erro de falta de permissão para acessar o diretório, no entando, você conseguirá acessar via seu código c#, acredito que essa solução seja a melhor e resolve seu problema de maneira simples, lembrando que esse recurso foi criado justamente evitar que pessoas roubassem themes das aplicações.
Isso é comumente utilizado para banco de dados você cria um banco de dedas e coloca dentro do App_Code para ninguem roubar suas informações.
Resolvido certo?
Doc/Theme/Image = Access Denied
Se você for implementar dessa forma que eu coloquei, por favor não esqueça de marcar como resposta válida.
Abraços,
Leandro Rodrigues
Caso a resposta tenha ajudado, não esqueça de marcar como resposta válida
- Editado Leandro Rodrigues quarta-feira, 7 de março de 2012 02:50 erro digitação
- Sugerido como Resposta Augusto.Silva quinta-feira, 8 de março de 2012 00:27
- Marcado como Resposta Harley Araujo quinta-feira, 8 de março de 2012 10:46
-
-
Faz com handler mesmo
http://forums.asp.net/t/1644430.aspx/1
http://www.codeproject.com/Articles/39158/Protect-Files-and-Folders-Using-HttpHandlers-in-AS
Não esqueça de usar o componente </> na barra para posta seu código. Microsoft MCPD,MCTS,MCC
- Sugerido como Resposta Augusto.Silva quinta-feira, 8 de março de 2012 00:26
- Marcado como Resposta Harley Araujo quinta-feira, 8 de março de 2012 10:46
-
Obrigado gente ! acho que as duas respostas estão corretas e podem ser utilizadas as soluções propostas por elas. Obrigado Leandro e Seilor.
Optei por fazer simples, coloque as imagens na pasta App_Data.
Resumindo, as imagens apresentadas num Datalist tem em baixo de cada uma um botão para fazer download, esse botão fica visivel unicamente para os usuarios logados e com a permissão para baixar imagens. Quando clicado esse botão entra em funcionamento o seguinte código:
....
if (Reader.Read())
{
strFileName = Reader["IDFoto"].ToString();
strUserPath = Reader["PathGaleria"].ToString();
Reader.Close();
strPathFile = Server.MapPath("~/App_Data/" + strUserPath + "/" + strFileName + ".jpg");
Response.AppendHeader("content-disposition", "attachment; filename=" + strFileName + ".jpg");
Response.ContentType = "";
Response.WriteFile(strPathFile);
Response.End();
}
....e pronto, mostra o diálogo para baixar a imagem sem mostar o caminho. Agora é so salvar na pasta local.
Dudu.