2010-12-11 64 views
0

Existe-t-il un moyen d'empêcher les utilisateurs de télécharger directement les fichiers zip du serveur? J'essaye d'ajouter tout dans le htaccess mais tout ce qui empêche l'utilisateur de parcourir le contenu du dossier. Ils sont encore en mesure de taper directement dans le navigateur http://site.com/file.zip et il serait télécharger ..htaccess ou autre méthode pour empêcher le téléchargement de fichiers zip?

Des idées?

+0

Ne mettez pas le fichier zip là en premier lieu. (Pour une réponse sérieuse, vous devrez probablement décrire les conditions lorsque vous * voulez * permettre le téléchargement du fichier) – Quentin

+0

Les personnes qui peuvent le télécharger ne sont autorisées que par le biais de sessions PHP..Si elles sont connectées session est créée en autorisant l'utilisateur, alors ils peuvent le télécharger. Tous les autres ne peuvent pas ... –

Répondre

0

Si htaccess ne fonctionne pas vraiment, alors qu'en est-il de la définition d'autorisations pour ces fichiers comme 600 ou quelque chose? Je veux dire les permissions unix r/w, vous pouvez les changer via ftp etc. Et à moins que le serveur web ne fonctionne sous votre compte, il ne pourra pas y accéder.

+0

Ok, ce que j'ai fait a été changé le fichier zip téléchargé à un chmod 640 et qui empêche l'accès direct au fichier du public et permet toujours la lecture/écriture complète au propriétaire qui fonctionne parce que le fichier est présenté par un script PHP qui "est" le propriétaire ... –

0

Vous pouvez protéger par mot de passe un répertoire et placer le fichier zip dans ce répertoire. Un guide complet comment faire est here.

+0

Je suis à la recherche d'un autre moyen qui les renie juste ... semblable à un 404 s'ils essayent ... –

+0

Si vous ne le faites pas pour le protéger par mot de passe et ne le rendez pas accessible depuis à l'extérieur du tout, pourquoi avez-vous le fichier là-bas? Ne le mettez pas dans votre webroot et il ne sera pas visible. Même si ce n'est pas dans votre webroot, il peut toujours être utilisé par des scripts (PHP), donc si vous en avez besoin pour cela, vous pouvez tout simplement déplacer le fichier ailleurs. – GolezTrol

2

Utilisez mod_rewrite pour réécrire une URL qui se termine par .Zip à la page qui fait l'autorisation et à la page autorisation passthru() utilisation pour fournir le fichier zip.

Quelque chose comme ça (peut ne pas fonctionner hors de la boîte, mais simplement pour vous donner une idée):

RewriteRule ^(.*?\.zip)$ authMe.php?url=$1 

Bonne lecture ici: http://httpd.apache.org/docs/current/mod/mod_rewrite.html

Et ici: http://php.net/manual/en/function.passthru.php

+0

J'ai essayé une combinaison de ceci (rewriterule) je n'arrivais toujours pas à le faire fonctionner ... Je suis toujours capable de simplement coller l'URL à le fichier dans le navigateur et le télécharger ... –

+1

Ensuite, votre réécriture ne correspond pas à l'URL. Essayez quelque chose qui correspond à tout et ensuite voir si vous vous retrouvez sur la page authMe. Par exemple: RewriteRule^(*) $ authMe.php? Url = $ 1 À partir de là, vous devez ensuite resserrer la règle de correspondance à seulement les fichiers zip, ou n'importe quel fichier dans un dossier nommé XYZ: RewriteRule^XYZ/([^ /] *) $ authMe.php? url = $ 1 – Bazzz