Protéger le téléchargement des fichiers zip

Soyez le premier à donner votre avis sur cette source.

Vue 15 147 fois - Téléchargée 1 679 fois

Description

Tant que la session ne l'autorisera pas, il sera impossible de télécharger le fichier ZIP (quoi que l'internaute puisse en penser).

Ce code source a été imaginé suite à la visite d'un gros site de m***e qui mettait 5 minutes d'attente (édulcorées de publicités bien sûr) pour des fichiers qui ne font 200 ko. En tapant le nom du fichier en guise d'URL, on était redirigé vers pire encore.

Le principe de ce système est le suivant:

1) Il faut dire à Apache que les ZIP sont des fichiers PHP, quitte ensuite à modifier le Header. Le HTACCESS s'en charge.

2) Il faut sécuriser les fichiers ZIP envoyés sur le serveur. Pour cela, on utilise SECURE_FILE.PHP: on tape son nom (ex: 02.zip) et on poste le fichier. Le script insère en début et fin de fichier des commandes PHP, et stocke le fichier dans un répertoire spécifique. Le début vérifie l'autorisation de téléchargement par une session, et la fin efface la permission.

3) Si on tape l'URL du fichier, on est redirigé sur l'accueil par le début. Si on est autorisé, on récupère le fichier et on efface l'autorisation de la session. Après téléchargement, le fichier ZIP est tel qu'il était avant d'être sécurisé par le serveur.

4) Même en étant sécurisé sur le serveur, l'expérience montre que le fichier n'est pas corrompu et qu'il peut toujours être décompressé par WinZip. En revanche, il ne peut plus être modifié.

Au final, voici une protection bien sympathique. Tout dépend après si on veut faire patienter l'internaute...

Conclusion :


Vous pouvez toujours aller visiter http://altert.family.free.fr/

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Anthomicro
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
Salut,

n'utilise pas session_is_registered mais plutôt if(isset($_SESSION['variable']))

Ensuite c'est une bonne source sinon, mais pourquoi tu te casses autant la tête ?

Un répertoire innaccessible via http (ou avec un deny from all si tu peux pas mettre de répertoires innaccessibles via http) contenant tes fichiers zips, une page php qui fait un force download et récupère le contenu du zip, c'est beaucoup plus simple et tout aussi sécurisé ;-)

a +
cs_Anthomicro
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
9/10 sinon ;-)
cs_grandvizir
Messages postés
1237
Date d'inscription
samedi 8 novembre 2003
Statut
Membre
Dernière intervention
3 septembre 2006
8 -
Ca dépend sur quels types de ZIP t'as envie de cliquer.

Compare donc ces deux actions PHP :
http://domain.com/pour_toi_anthomicro.zip
http://domain.com/protected.php?file=pour_toi_anthomicro.zip

C'est sur le premier que tu as envie de cliquer. Et pourtant, tu peux pas le récupérer si je rajoute des entêtes et pieds-de-page en PHP.

Naturellement, si tu as 2000 fichiers ZIP, là tu forces le download avec une page PHP couplée à un .HTACCESS

PS: "http://domain.com" est un nom choisi du hasard pour illustrer l'exemple
cs_Anthomicro
Messages postés
9440
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
tu peux très bien utiliser l'url rewriting pour faire ceci (une ligne dans un htaccess)

RewriteRule ^[a-z-A-Z0-9\-_]*.zip$ /telechargement.php?fichier=$1.zip

et hop ;-)
coucou747
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
26 -
antho, t'as oublié RewriteEngine=ON;
et tu peux aussi le faire a partir des erreurs 404 : renvoyer vers un script php.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.