Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
[PHP/JS] Download de Ficheiros
06-07-2014, 00:13
Mensagem: #1
[PHP/JS] Download de Ficheiros
Tenho um site construído, porém existe um "pequeno" problema no que toca ao download de ficheiros...
Se o ficheiro tiver o nome de "file.docx" no caminho "www.website.com/files/" basta aceder ao link "www.website.com/files/file.docx" para obter o ficheiro...

Como é que posso impedir isso? O ideal seria, em vez de aceder ao ficheiro diretamente, seria aceder a um ficheiro em PHP ou JS para identificar a pessoa (sem utilizar o $_GET, porque não gosto de meter informações nos links). Nunca fiz tal coisa, e a pesquisa que fiz... meh

Se poderem colocar links ou certas palavras chave paa pesquisar que me possam estar a escapar, ajudará bastante!
Thanks Smile
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
06-07-2014, 12:18
Mensagem: #2
RE: [PHP/JS] Download de Ficheiros
Bom dia,

Podes criar um ficheiro .htaccess em que bloqueias o acesso à pasta files assim já ninguém faz o download a partir do nome do ficheiro no link. Se procurares no google irás encontrar muita informação sobre isto.

Para usares um ficheiro php para fazeres o download do ficheiro seria algo do género:

Link: http//teusite.com/download.php?file=52

Em que nesse ficheiro download.php poderias verificar se o utilizador estava autenticado a partir da $_SESSION, e terias de ter na base de dados uma tabela para associares o caminho do ficheiro a um id.

Campos da tabela files na base de dados:
int id,
Varchar path

Supondo que tens a linha na base de dados:
id: 52  path: "files/file.docx"

No php, irias obter o path a partir do id que receber no $_GET e forçavas o download do ficheiro (files/file.docx) forçando os headers da resposta. 

Mais info: http://stackoverflow.com/questions/8485886/force-file-download-with-php-using-header

Cumprimentos

[Imagem: lJbIuj6l]
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
06-07-2014, 15:58
Mensagem: #3
RE: [PHP/JS] Download de Ficheiros
(06-07-2014 12:18)IAMFREEE Escreveu:  Link: http//teusite.com/download.php?file=52

Em que nesse ficheiro download.php poderias verificar se o utilizador estava autenticado a partir da $_SESSION, e terias de ter na base de dados uma tabela para associares o caminho do ficheiro a um id.

Supondo que tens a linha na base de dados:
id: 52  path: "files/file.docx"

No php, irias obter o path a partir do id que receber no $_GET e forçavas o download do ficheiro (files/file.docx) forçando os headers da resposta.
Mas se o utilizador tiver acesso a esse link, não terá acesso à pasta toda?
?file=52
Base de Dados devolve "files/file.docx"
Script PHP manda fazer download do ficheiro "http//teusite.com/files/file.docx"

Ou seja, se o utilizador meter mão no link "http//teusite.com/files/" apanha tudo o que é ficheiro, estando ou não autenticado. (a menos que não haja forma de não aceder ao ficheiro "index" da pasta). Certo?
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
06-07-2014, 23:19
Mensagem: #4
RE: [PHP/JS] Download de Ficheiros
(06-07-2014 15:58)dininis Escreveu:  Ou seja, se o utilizador meter mão no link "http//teusite.com/files/" apanha tudo o que é ficheiro, estando ou não autenticado. (a menos que não haja forma de não aceder ao ficheiro "index" da pasta). Certo?

Caso uses um ficheiro .htaccess na pasta files com por exemplo:

Código:
Options -Indexes
O utilizador mesmo que vá a http//teusite.com/files/ não consegue listar os ficheiros existentes.
Procura mais informação como bloquear acessos a directorias/ficheiros no htaccess.
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
08-07-2014, 20:33
Mensagem: #5
RE: [PHP/JS] Download de Ficheiros
(06-07-2014 23:19)IAMFREEE Escreveu:  
(06-07-2014 15:58)dininis Escreveu:  Ou seja, se o utilizador meter mão no link "http//teusite.com/files/" apanha tudo o que é ficheiro, estando ou não autenticado. (a menos que não haja forma de não aceder ao ficheiro "index" da pasta). Certo?

Caso uses um ficheiro .htaccess na pasta files com por exemplo:

Código:
Options -Indexes
O utilizador mesmo que vá a http//teusite.com/files/ não consegue listar os ficheiros existentes.
Procura mais informação como bloquear acessos a directorias/ficheiros no htaccess.
não querendo, de forma alguma, abusar da sua disponibilidade, existe forma de, em vez de mostrar o erro 403 (não tem acesso), mostrar um erro 404 (ficheiro inexistente)? Isto é, sem recorrer a qualquer tipo de redireccionamento (o que modifica o link que o "utilizador" colocou no browser, indicando ao mesmo que o ficheiro, existe mesmo).
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
09-07-2014, 22:16
Mensagem: #6
RE: [PHP/JS] Download de Ficheiros
(08-07-2014 20:33)dininis Escreveu:  
(06-07-2014 23:19)IAMFREEE Escreveu:  
(06-07-2014 15:58)dininis Escreveu:  Ou seja, se o utilizador meter mão no link "http//teusite.com/files/" apanha tudo o que é ficheiro, estando ou não autenticado. (a menos que não haja forma de não aceder ao ficheiro "index" da pasta). Certo?

Caso uses um ficheiro .htaccess na pasta files com por exemplo:

Código:
Options -Indexes
O utilizador mesmo que vá a http//teusite.com/files/ não consegue listar os ficheiros existentes.
Procura mais informação como bloquear acessos a directorias/ficheiros no htaccess.
não querendo, de forma alguma, abusar da sua disponibilidade, existe forma de, em vez de mostrar o erro 403 (não tem acesso), mostrar um erro 404 (ficheiro inexistente)? Isto é, sem recorrer a qualquer tipo de redireccionamento (o que modifica o link que o "utilizador" colocou no browser, indicando ao mesmo que o ficheiro, existe mesmo).

Sim apensas usando o .htaccess., basta pesquisares no google sobre o assunto e logo encontrarás.

[Imagem: lJbIuj6l]
Visitar Website de este utilizador Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 1 Visitante(s)