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 :

Restriction d'acces a un repertoire SANS htaccess


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 20
    Points : 17
    Points
    17
    Par défaut Restriction d'acces a un repertoire SANS htaccess
    Bonjour,

    Je vous explique mon probleme. J'ai disons un site tout simple qui permet de voir des albums photos. Les utilisateurs peuvent se loger et l'acces a certains albums ( repertoires ), est limite a certains groupes d'utilisateurs.

    Il est tres simple de gerer au niveau du php qui peut voir quoi. Mon probleme se situe au niveau des repertoires contenant les images. Si l'utilisateur rentre l'url en dur, il aura acces a des images qu'il ne devrait normalement pas voir ( humm humm ).

    Hors de question que j'utilise des noms de rep tordu, je trouve que c'est une solution barbare.

    J'ai aussi pense au .htaccess, que je pourrais creer/modifier dynamiquement, mais cela pose un gros probleme. L'utilisateur devra s'identifier 2 fois ( pour la partie PHP ET pour chaque rep auquel il voudrait acceder ). Je trouve ca tres moyen aussi.

    Si des experts ont des idees je suis preneur. Par exemple lier l authentification par htacces et celle presente sur le site.

    Merci d'avance,

    Np.

  2. #2
    Membre éclairé Avatar de Hervé Saladin
    Homme Profil pro
    Ingénieur d'études en développement et déploiement d'applications
    Inscrit en
    Décembre 2004
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études en développement et déploiement d'applications
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 647
    Points : 799
    Points
    799
    Par défaut
    moi je peux te proposer un truc que j'utilise :

    1ere étape : tu mets tous les fichiers à protéger dans un dossier NON ACCESSIBLE, c.à.d. soit en dehors de l'arborescence des directory d'apache, soit dans un dossier protégé par un .htacess avec "deny from all".

    2e étape :ces fichiers inaccessibles par des requetes http normales, tu les fais lire par un script php qui, lui, est accessible par http et qui se charge de vérifier les droits d'accès.
    Un truc de ce genre :

    voir_photo_protegee.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    // tu commences par faire la vérif sur les droits d'accès (vérif basée sur la session de préférence)
    if(utilisateur_autorise())
    {
    	$dossierProtege = "/home/apache/";
    	$nomFichier = "unfichier.jpg";
    	$cheminFichierSurLeDisque = $dossierProtege.$nomFichier;
     
    	// tu essayes de déterminer le type MIME du fichier
    	$typeMIME = mime_content_type($cheminFichierSurLeDisque);
     
    	// si tu as trouvé le type MIME, tu l'envoie dans les entetes http
    	if($typeMIME != null)
    		header('Content-type: '.$typeMIME);
     
    	// tu envoies le nom du fichier dans l'entete http (facultatif)
    	header('Content-Disposition: filename='.$nomFichier);
     
    	// tu lis le contenu du fichier que tu envoies "brut" dans le flux de sortie
    	readfile($cheminFichierSurLeDisque);
    }
    else
    	header('HTTP/1.1 403 Forbidden');
    Une fois que t'as fait ce script et qu'il marche bien, tu n'as plus qu'a mettre une balise img pointant dessus, par exemple (si le fichier protegé est une image)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="voir_photo_protegee.php" alt="fichier image protegé"/>
    Bien sûr c'est un exemple, en vrai tu ne mettras pas le nom du fichier "en dur" dans le code, tu iras le chercher dans les parametres de la requete http, ou dans une base de données etc ... à toi de te servir de cette base pour l'améliorer

  3. #3
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    salut,
    y'a peut être une solution en laissant les fichiers dans l'arborescence et en utilisant chmod.

  4. #4
    Membre averti Avatar de max44410
    Étudiant
    Inscrit en
    Juin 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2003
    Messages : 426
    Points : 301
    Points
    301
    Par défaut
    Citation Envoyé par julien.63
    salut,
    y'a peut être une solution en laissant les fichiers dans l'arborescence et en utilisant chmod.
    Autre solution donnee il y pas plus de 2 jours sur le forum... enregistrer les photos dans la base de donnees.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 20
    Points : 17
    Points
    17
    Par défaut
    Ok merci de vos reponses je vais les etudier en detail. J'avais bien pense a les mettre dans la base de donnees mais je pense que ca risque de la surcharger lourdement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 26/01/2010, 20h23
  2. Réponses: 1
    Dernier message: 07/04/2008, 10h51
  3. Restrictions d'accès à un repertoire
    Par al85 dans le forum IIS
    Réponses: 2
    Dernier message: 10/07/2006, 08h31
  4. Réponses: 1
    Dernier message: 30/09/2005, 21h42
  5. Réponses: 13
    Dernier message: 11/08/2004, 11h06

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