marsolim 110 Denunciar post Postado Fevereiro 24, 2015 salve galera tudo nos conformios? estou com uma dúvida para a qual venho pedir dicas e opiniões. seguinte estou criando um site que será acessado por alguns usuários que terão seus conteúdos próprios e queria uma forma de um não poder ver as imagens, vídeos, arquivos, etc dos outros. seria algo tipo facebook aonde uma imagem pode ser definida como privada. já que citei om facebook, como ele controla isso? alguem sabe? será unicamente no rewrite do htaccess? será incluindo os arquivos em blob no banco de dados? essa segunda opção não me apraz porque logicamente o banco ficaria gigantesco. como seria a forma mais eficaz? agradeço pelas dicas. Compartilhar este post Link para o post Compartilhar em outros sites
Lucas Guima 164 Denunciar post Postado Fevereiro 24, 2015 Já pesquisou na net (leia Google) sobre isso? Compartilhar este post Link para o post Compartilhar em outros sites
Danilo Soncini 15 Denunciar post Postado Fevereiro 24, 2015 Vamos separar por partes, para limitar o conteúdo que o cara vai ver é algum parâmetro em banco Permissão Publico - Todos visualizam Privado - Apenas o proprietário visualiza Amigos - ... etc É o famoso "if" no código if($publico) { echo "Conteúdo" } elseif($privado and $usuaricriador = $usuarioLogado) { echo "Conteúdo" } else { echo "conteúdo indisponível" } Você já possui uma estrutura de Banco? talvez seja nessa parte que tenha que estudar para verificar onde vai persistir os dados de permissão. Em armazenar imagens em bancos, existem alguns tópicos sobre esse assunto no fórum, mas resumindo o custo de redundância e escalonamento de um servidor de banco é maior que de um servidor de aplicação, então em miúdos prefira manter os arquivos na aplicação com nomes não amigáveis, e sem listar arquivos do diretório. Acredito que o htaccess e rewrite não sejam necessários para essa função, apenas para os bloqueios de listagem dos diretórios. Ou colocar a imagem física em um local fora da pasta que não acesse via http e busque via servidor e retorne em base64 Compartilhar este post Link para o post Compartilhar em outros sites
marsolim 110 Denunciar post Postado Fevereiro 24, 2015 em primeiro lugar agradeço a todos por participar. Lucas Guima eu sempre passo umas horas e por vezes dias pesquisando antes de postar. inclusive vai fazer dois anos que me inscrevi no forum e só postei 3 perguntas contando essa desse tópico mas já postei dezenas de respostas a perguntas de outros membros. nesses quase dois anos foram incontaveis as vezes que resolvi dúvidas apenas pesquisando no forum e no famoso google :P mas tem momentos que a gente não encontra as vezes por não saber os termos corretos para usar na pesquisa. dessa vez mesmo pesquisei no forum e no google usando termos em português e em inglês mas não consegui nada alem do que eu já imaginava. Danilo Soncini, essa parte de liberar o acesso ao conteúdo tendo por base as permissões no cadastro do banco de dados é tranquilo. a minha dúvida mesmo é como as redes sociais como o face fazem para um usuário não ter acesso externo ou via browser ao conteúdo privado de outro usuário mais especificamente imagens, vídeos e arquivos. eu queria entender o processo para ver se consigo fazer parecido. o que eu tenho em mente a princípio é cadastrar todos os caminhos desses arquivos no banco de dados. algo do tipo: id | iduser | pasta | nomearquivo ou ainda nem precisa cadastrar no banco. se eu programar para os arquivos serem salvos com um prefixo que seja a id do usuário posso usar o prefixo para carregar as imagens apenas desse usuário por exemplo na página. com isso posso colocar na página os links apenas para o conteúdo cadastrado pelo usuário. e para evitar que outros usuários consigam acessar pela barra de endereço do browser digitando por exemplo www.site.com.br/pasta/imagem.jpg ou que conseguissem abrir a imagem externamente em outro site eu usaria o htaccess. tenho em mente ainda bloquear acesso direto as pastas do site ou seja só poderá acessar via uma página index. ainda outra coisa que tenho em mente é trocar o nome do arquivo por um md5 por exemplo. uma última pergunta, vocês acham mais prático criar uma pasta para cada usuário ou deixar tudo em uma pasta só com a identificação do usuário? por exemplo: iduser_nomearquivo.ext agradeço mais uma vez. Compartilhar este post Link para o post Compartilhar em outros sites
Fernando C 128 Denunciar post Postado Fevereiro 25, 2015 1 dica: pesquise sobre sessões Compartilhar este post Link para o post Compartilhar em outros sites
marsolim 110 Denunciar post Postado Fevereiro 27, 2015 Fernando C agradeço pela resposta mas não é esse o caso. as seções não são segredo para mim. Compartilhar este post Link para o post Compartilhar em outros sites
Maykel-ctba 233 Denunciar post Postado Fevereiro 27, 2015 Com Sessions você faz tudo isso. Só atribuir uma verificação simples de algoritmo. Em todo conteúdo, você terá que cadastrar a quem pertence. se (id do dono do conteudo == id da sessao) libera a visualização senao não mostra nada, ou algum outro conteudo generico para todos. Agora se a pessoa tiver a URL final da imagem exclusiva, por ex. não há o que ser feito. Mesmo no Facebook, se a imagem estiver privada, ela copia a URL dela e passa pra alguem, ela verá normalmente o JPG. Compartilhar este post Link para o post Compartilhar em outros sites
marsolim 110 Denunciar post Postado Fevereiro 27, 2015 Maykel como eu falei essa parada de liberar por sessions para visualização dentro da página é tranquilo, isso não é segredo para mim. a questão é exatamente abrir o arquivo externamente pela url no navegador ou a partir de outro site nos chamados hot links. eu já bloqueio isso usando htaccess. o que eu queria saber é se alguém conhece algum outro método para fazer esse bloqueio. Compartilhar este post Link para o post Compartilhar em outros sites
Maykel-ctba 233 Denunciar post Postado Fevereiro 27, 2015 Acredito que só por htaccess e se estes arquivos estiverem em diretórios separados por usuario, por exemplo. Dessa maneira, travaria o acesso ao diretório com determinado ID. Mas na prática não sei nem se é possível, mas se você diz q já fez, até gostaria de saber como foi feito! Compartilhar este post Link para o post Compartilhar em outros sites
marsolim 110 Denunciar post Postado Fevereiro 27, 2015 eu uso em um nível anterior ao public_html para funcionar para todas as pastas e subpastas um arquivo .htaccess com os parâmetros abaixo que eu comentei para saber o que faz o que: # bloqueia acesso ao diretório pela # barra de endereços do browser Options All -Indexes # ativa a sobrescrita de url RewriteEngine on # define o site dentro de onde uma página # pode acessar os arquivos bloqueados RewriteCond %{HTTP_REFERER} !^http://(.+.)?site.com.br/ [NC] # define as extensões que serão bloqueadas para # acesso externo e direciona para a página index.html RewriteRule .*.(jpg|png|gif|zip|rar|exe)$ index.html [L] # abre uma página de erro personalizada ErrorDocument 403 /403.html # abre uma página de documento # não encontrado personalizada ErrorDocument 404 /404.html claro que isso tudo tem que estar habilitado no php.ini. geralmente os hosts já tem isso habilitado. na primeira linha desse .htacess eu bloqueio acesso ao diretório que não tiver uma página index. se a pessoa tentar acessar o diretório dará um erro 303. então tenho um parâmetro que abre uma página personalizada ao invés de exibir o erro padrão. nas outas linhas defino que só o site aonde está tudo isso pode ter páginas que acessam os arquivos bloqueados e defino as extensões bloqueadas. se alguém digitar na barra de endereço http://www.site.com.br/imagem.jpg ou colocar isso em um link dentro de outro site (hot link) ele será direcionado para a página index.html e não será exibida a imagem mesmo que ele exista. isso também bloqueia download de arquivos pela barra de endereços. se eu tenho um arquivo de nome arquivo.rar e a pessoa digitar www.site.com.br/arquivo.rar na barra de endereços também será direcionado para index.html e não será feito o download. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Fevereiro 27, 2015 como ele controla isso? alguem sabe?não sei qual é a estratégia exata que eles usam, porém consigo imaginar formas de fazer. será unicamente no rewrite do htaccess?certamente não. será incluindo os arquivos em blob no banco de dados?também não. Você terá que fazer esse controle programaticamente. Imagine os estados: -> Pode ser público -> Pode ser privado Okay ? Considere uma delas como "padrão" (default). Peguemos o estado público como padrão. Sempre que algo tiver que ser exibido, seja por URL direta ou no meio de alguma outra listagem, vc terá que verificar em um banco de dados, quais as condições de exibição daquele conteúdo. Se for público, não terá nada no banco. Se for privado, vc terá o ID de quem pode visualizar. Seus usuários estão sempre logados. Verifique se o usuário atual na sessão possui acesso aquele conteúdo, fazendo uma busca no banco. Quanto a URL direta, sempre que algo for privado, impeça de ser exibido, por você não conseguir saber quem é que está tentando ver. (caso não haja uma sessão aberta). Compartilhar este post Link para o post Compartilhar em outros sites
marsolim 110 Denunciar post Postado Março 1, 2015 William Bruno agradeço pela resposta mas como eu disse o controle dentro do site usando sessões, cookies e o banco de dados é tranquilo. isso para mim não é segredo. a questão que me ronda se trata apenas sobre a abertura ou download de arquios digitando a url na barra de endereços como por exemplo www.site.com.br/imagem.jpg ou www.site.com.br/arquivo.zip mas para isso também já tenho alguns macetes como bloquear acesso direito ao diretório colocando uma página index nele e usando -indexes no htaccess alem de usar outros truques (veja o exemplo de htaccess que postei anteriormente). só queria mesmo ver se alguém sabia de outros truques para esse bloqueio de acesso externo a imagens, vídeos e outros arquivos como zip e exe. mas acho que é só isso que já uso mesmo. de qualquer forma agradeço a todos. Compartilhar este post Link para o post Compartilhar em outros sites