Jump to content
Sign in to follow this  
KiNgPiTo

Retirar acesso directo a um ficheiro...

Recommended Posts

KiNgPiTo

Boas pessoal!!

A minha duvida é esta: Tenho um site com uma área de downloads de ficheiros .doc e .pdf e penso que alguns .png's também lá vão ficar para download. O problema é que eu só quero que tenham acesso a partir do site, tipo ao clicar no botão download faz o download e mais nada mas se for pela barra de endereço e indicar o caminho para o ficheiro (ex.: www.enderecoteste.com/downloads/ficheiro.pdf) ele abre na mesma e eu não quero, queria que aparece-se uma mensagem ou até nem aparece-se nada...

PS.: Meti nesta área pois não penso que isto seja algo de programação mas talvez configurações maybe no htaccess mas eu não faço a mínima ideia..

Cumprimentos

Obrigado  :)

Share this post


Link to post
Share on other sites
KiNgPiTo

Mete os ficheiros a serem sacados por php.

Ex :

www.enderecoteste.com/downloads/getfile.php?name=xxx.pdf

(isto dentro do sistema)

.. e impedes o acesso directo a pasta dos downloads por htaccess.

Já estão a ser acedidos por php, não sei é impedir o acesso a pasta pelo htaccess  🤔 Vou procurar como é que é, nunca trabalhei com o htaccess

Share this post


Link to post
Share on other sites
KiNgPiTo

Inseri um htaccess na pasta dos downloads com o codigo: deny from all

o problema é que agora nem pelo ficheiro php consigo aceder....

Share this post


Link to post
Share on other sites
yoda

Isso é porque estás a aceder por http, o que é um comportamento normal.

Por acaso não me lembrei disso. Mas podes fazer outra coisa. Em vez de usares htaccess, crias uma variável global definida no index do sistema, e verifica nesse getfile.php se a mesma está definida ou não. Se o link for acedido directamente, impedes o processo.

Ex :

index.php

define('FOO', true);

getfile.php

defined('FOO') or die('Querias! Muhohahaha!');

Share this post


Link to post
Share on other sites
KiNgPiTo

Mas fazendo isso, o ficheiro continua a ser acedido directamente com o caminho absoluto (sem ser por php, nao sei se me fiz entender..)

Aliás encontrei uma solução ainda mais adequada ao que preciso.. Pelo htaccess (que esta na pasta dos downloads), inseri este código:

AuthName "Area Protegida"

AuthType Basic

AuthUserFile /httpdocs/downloads/.htpasswd (vai buscar o user e a pass)

Require valid-user

e apenas deixa aceder aos ficheiros da pasta se meter a password... o ideal e que não sei como, era através do script php inserir o user e a pass dessa autenticação e aceder ao ficheiro.. alguma ideia (obrigadão pela ajuda até então :) )

Share this post


Link to post
Share on other sites
Hipnoted

E que tal colocar essa directoria de ficheiros acima do httpdocs, e depois com um .php "puxas" o ficheiro desse nível acima?


"Nunca discutas com um idiota. Eles arrastam-te até ao seu nível e depois ganham-te em experiência"

Share this post


Link to post
Share on other sites
Nazgulled

Podes usar a mesma estratégia que se usa para prevenir hot-linking, não sei se adequa ao teu problema:

Põe isto no .htaccess onde estão localizados os tais ficheiros para download. Só dentro do teu domínio é que eles podem ser acedidos.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond !^http://(www\.)?dominio\.com/.*$ [NC]
RewriteRule .*\.(doc|pdf)$ - [F,L]

Penso que deve funcionar, mas não testei.

Share this post


Link to post
Share on other sites
KiNgPiTo

E que tal colocar essa directoria de ficheiros acima do httpdocs, e depois com um .php "puxas" o ficheiro desse nível acima?

O alojamento tem a pasta httdocs como a raiz.. nao posso ver o que está para traz..

Podes usar a mesma estratégia que se usa para prevenir hot-linking, não sei se adequa ao teu problema:

Põe isto no .htaccess onde estão localizados os tais ficheiros para download. Só dentro do teu domínio é que eles podem ser acedidos.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond !^http://(www\.)?dominio\.com/.*$ [NC]
RewriteRule .*\.(doc|pdf)$ - [F,L]

Penso que deve funcionar, mas não testei.

Nao consegui.. dá este erro:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@admin and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Share this post


Link to post
Share on other sites
Nazgulled

Isso não, substituis o domínio pelo teu suponho? Deves ter feito algo mal e o interpretador está a dar erro... Vê no ficheiro de erros do Apache qual é o problema.

Share this post


Link to post
Share on other sites
KiNgPiTo

Ando a testat no localhost para ver como funciona e como e que ficaria com o htaccess que deste a parte do dominio? é que com ? e outros caracteres baralhou-me todo :)

Share this post


Link to post
Share on other sites
Nazgulled

Não dá para exprimentar lá muito bem se for localmente. Terias de ter alguém no exterior a tentar aceder para ver se realmente estava a bloquear ou não.

Porque se tentares aceder pelo teu próprio servidor, ele vai-te dar acesso como é lógico. Mas quando tens ficheiros num servidor remoto, qualquer pessoa que aceda está fora do domínio e nunca terá acesso (pelo menos é essa a ideia).

Share this post


Link to post
Share on other sites
softklin

E que tal colocar essa directoria de ficheiros acima do httpdocs, e depois com um .php "puxas" o ficheiro desse nível acima?

Concordo com esta solução. Colocas todos os ficheiros que não queres que sejam acedidos directamente numa pasta, seja ela "protected_files". Dentro desta pasta, colocas um .htaccess com os conteúdos:

deny from all

Depois, com um ficheiro php na raiz do site (ou noutro lado qualquer, excepto na pasta protected_files), abres o ficheiro para leitura e "despejas" no browser, consoante o tipo de dados pretendido. Há muitos exemplos na net. Isto funciona, porque o PHP está a ir buscar localmente os conteúdos do ficheiro, através do sistema de ficheiros, enquanto que se fosses buscá-lo por HTTP já obterias o erro 403 Forbidden.


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Share this post


Link to post
Share on other sites
KiNgPiTo

Podes usar a mesma estratégia que se usa para prevenir hot-linking, não sei se adequa ao teu problema:

Põe isto no .htaccess onde estão localizados os tais ficheiros para download. Só dentro do teu domínio é que eles podem ser acedidos.

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_REFERER} !^$
RewriteCond !^http://(www\.)?dominio\.com/.*$ [NC]
RewriteRule .*\.(doc|pdf)$ - [F,L]

Penso que deve funcionar, mas não testei.

Tens toda a razão! Não estava a funcionar pois estava a aceder sempre a partir do meu servidor local, não fazendo hotlinking nenhum... Acedi por outro pc da rede e já bloqueou totalmente e autoriza o script a fazer o download. Alojei também no servidor e impecável!

Muito obrigado a todos pela ajuda... 5 estrelas :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.