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
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
(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?
(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:
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.
(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:
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).
(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:
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.