|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : septembre 2005 Messages : 10 ![]() |
Bonjour,
Alors voici mon problème. J'ai un site protégé par login php et session. Une fois le visiteur rentré, il put accèder à tout : naviguer de fichier php en fichier php ou bien télécharger des fichiers pdf situé dans un autre repertoire. Cependant je me suis rendu compte qu'en entrant l'adresse directe du fichier pdf : http://monsite.com/Marketing/fichierpdf.pdf, n'importe qui pouvait le télécharger. Comment faire pour rendre l'accès directe à mes fichiers impossible ? Merci de votre aide. PS : je ne souhaite pas utiliser de .htaccess pour le controle d'utilisateur mais bien php/session. PS2 : j'ai essayé de mettre un .htaccess avec un "deny all" dans le repertoire des pdf, mais celui ci bloque également le téléchargement par les utilisateurs authentifiés ! |
|
|
00
|
|
|
#2 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2006 Messages : 26 ![]() |
Ne donner les droits de lecture/ecriture qu'à l'utilisateur qui est associé à ton serveur web (apache, nobody, ...) pour ton répertoire contenant les pdf.
chown + chmod sous Linux. Puis créer une page php qui ira lire le fichier dans le répertoire pour le restituer. Tu pourras dans cette page vérifier que l'utilisateur est authentifié, vérifier l'existance du fichier et le renvoyer à l'utilisateur en réécrivant les entetes. ça pourrait donner quelque chose comme ça (je ne te certifie pas que le code fonctionne mais ça te donne une base pour démarrer) Code :
Mais attention : bien vérifier les paramètres d'appel à une telle page comme par exemple par identifiant de fichier à partir d'une base de donnée ou du nom réel du fichier Ceci afin d'éviter que des personnes mal intentionnées n'accèdent pas à d'autres répertoires (ex. /etc/passwd, etc.) A toi de bien sécuriser ton script. Tom a+ |
||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
Tout à fait d'accord avec la solution de Tom_92.
Quelques précisions : je te conseille de stocker le chemin, le nom du fichier, sa description éventuelle et sa taille en bdd. Ensuite, tu appelles le script de téléchargement avec en paramètre uniquement l'id numérique du fichier. Cela rend le contrôle de la validité du fichier beaucoup plus simple (pour en effet ne pas accéder à un répertoire non autorisé). |
|
|
00
|
|
|
#4 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
Tu pourrais également utiliser un fichier .htaccess, non pour le contrôle de sessions, mais bien pour protéger ton répertoire contre les accès HTTP directs à tes fichiers : Ensuite, tu utilises le même style de fichier qu'indiqué ci-dessus (attention à ne pas le mettre dans un répertoire protégé par .htaccess) pour identifir ton user, vérifier que le fichier à télécharger existe puis l'envoyer au navigateur. Bien entendu, tu peux combiner ces deux techniques, même si cela n'aurait pas un intérêt exceptionnel.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#5 |
|
Invité(e)
Messages : n/a ![]() |
Le problème, si je peux me permètre c'est que le non d'utilisateur et le mot de pass, passe en claire a l'identification et sa ètre obtenu avec ethereal, si tu as un scanne juste avant de taper ton user et ton passwd, a la reconstitution tu as ton user et pass en claire...
J'ai vu sa au cour sécurié linux. |
00
|
|
|
#6 |
|
Membre chevronné
![]() Inscription : mars 2005 Messages : 1 667 ![]() |
ou alors tu utilise un httpwd pour demander a tes utilisateur de se reidentifié pour acceder au fichiers.
|
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : mars 2006 Messages : 26 ![]() |
Pour que les mots de passe ne circule pas en clair => SSL
Après il faut connaitre le degré de sécurité que tu veux appliquer à tes fichiers. Ethereal = scanne dans un réseau fermé. |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Inscription : janvier 2005 Messages : 1 249 ![]() |
On peut aussi hascher les login et mdp par md5 avant transfert, ce qui donne une excellente sécurité (notamment si on utilise un système de jeton avec grain de sel), sans être obligé de passer par SSL (indisponible chez la plupart des hébergeurs gratuits).
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com