IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sécuriser le dossier téléchargement


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut Sécuriser le dossier téléchargement
    Bonjour à tous,

    j'ai une application qui permet de publié des fichiers pdf, chaque utilisateurs à un dossier où son stocké ces fichiers. Mon soucie c'est que si l'utilisateur commence à joué avec URL il peut voir des fichiers d'autres utilisateurs. Je ne sais pas comment faire.

    Ps: j'utilise des sessions.

    Merci de votre aide.

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Bonjour,

    tu peux changer d'approche en stockant les fichiers pdf non pas dans un dossier mais directement dans une base de données avec le type BLOB. Comme ça tu peux facilement gérer les droits d'accès des utilisateurs (avec une table reliant l'id de l'utilisateur avec l'id du fichier) et ça évite les écrasements de fichiers (si deux utilisateurs décident d'appeler leur fichier "janine-aime-les-huitres.pdf" par exemple)
    En plus comme les pdfs comprennent une partie text tu peux envisager de faire des recherches dedans.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Une bonne idée mais ça ne va pas être possible, car non seulement y a des fichiers volumineux et ça va impacté au niveau de la récupération des données mais aussi ça va alourdir la base de données

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux avoir le même système de gestion avec le fichier en dehors de la base de donnée :
    - les fichiers sont tous stockés dans un repertoire non accessible
    - la base de donnée contient la reference fichier - utilisateur
    - une interface PHP liste à l'utilisateur les fichiers qu'il a le droit de consulter et distribue les fichiers que l'utilisateur demande (et qu'il a le droit de lire, il faut reverifier evidemment)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Tu peux mettre un .htaccess avec "deny from all" dans chacun de tes dossiers ce qui les rend impossible à visiter depuis une url.
    Ensuite tu fais afficher tes fichiers par php en contrôlant que le chemin envoyé est celui du dossier de l'utilisateur authentifié + un nom de fichier pdf (tu fais une vérif sur le nom de fichier pour supprimer les "/" ou ".." qui pourraient s'y trouver au cas ou un petit malin voudrait naviguer dans tes répertoires)

    Une autre solution serait de nommer le fichier pdf lors de son téléchargement sur le serveur avec un nom correspondant au login de l'utilisateur + un suffixe aléatoire assez long et d'enregistrer l'adresse du fichier dans une table utilisateur. Dans ce cas il faut s'assurer que le serveur est correctement configuré et ne permet pas de lister les fichiers d'un dossier depuis l'extérieur.

    EDIT j'avais pas vu la réponse de sabotage qui est un mix efficace de ces deux propositions.

  6. #6
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Effectivement mon application liste les fichiers selon le nom d'utilisateur, exemple si login = "toto" je vais cherché le dossier toto.

    Ma question est, si je crée un .htaccess avec deny from all ce que j'ai déjà fait avant, je n'ai pas accès à partir de l'interface ! ce que je peux faire c'est de créer un .htpasswd pour chaque dossier utilisateur qui lui obligera à retapé le mot de passe, et là j'ai une autre question, est ce que y a un moyen d'éviter ça car les mots de passe des utilisateurs seront stocké dans .htpasswd (même crypté).

    Concernant l'approche base de donnée, les admins de l’application dé fois le font à la main (mv plop.pdf /toto) ! donc au niveau de la base de donnée je garde juste le path du dossier utilisateur

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par stade13 Voir le message
    Ma question est, si je crée un .htaccess avec deny from all ce que j'ai déjà fait avant, je n'ai pas accès à partir de l'interface !
    Quelle interface, elle est figée ? Parce que sur le principe tu peux très bien faire afficher un fichier pdf par php qui lui aura accès aux dossiers protégés par un .htaccess ou éventuellement proposer son téléchargement.

Discussions similaires

  1. Sécuriser les dossiers confidentiels de mon PC ?
    Par quaresma dans le forum Windows XP
    Réponses: 1
    Dernier message: 07/08/2009, 12h17
  2. Session et sécuriser un dossier
    Par mohcinz dans le forum Langage
    Réponses: 3
    Dernier message: 01/04/2009, 00h37
  3. Sécuriser un dossier
    Par Gizmil dans le forum Sécurité
    Réponses: 1
    Dernier message: 22/11/2007, 17h35
  4. Comment sécuriser des dossiers ?
    Par kumo dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 15/11/2007, 14h48
  5. Réponses: 1
    Dernier message: 03/01/2006, 11h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo