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 :

PHP interdire l'accès à des données


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 9
    Points
    9
    Par défaut PHP interdire l'accès à des données
    Bonjour,

    Sur mon site internet (dynamique en PHP) je cherche rendre l'accès d'un repertoire impossible à l'utilisateur X mais j'aimerai que le serveur puisse y avoir accès.

    Pour l'instant j'utilise un .htaccess mais la protection est tellement efficace que même le serveur ne peut pas lire les données contenu dans le repertoire (images and co).

    Dans une certaine mesure ceci est logique puisque je n'ai pas envie que les gens visualisent certaines données sans permission mais par contre je ne peux pas afficher les autres données à des gens qui se sont loggés et qui sont authorisés.

    donc

    1) je veux interdire l'accès à des répertoires spécifiques par une modification de l'url (style www.monsite.fr/page_interdite/)

    2) je veux que quand même pouvoir afficher à l'écran certaines de ces données mais uniquement celles que les pages PHP appellent.
    (style www.monsite.fr/affiche_donnee_interdite.php?id=1)

    j'ai essayé de me documenter sur le sujet mais je n'ai pas trouvé quelque chose de claire.

    merci pour les indications que vous pourrez m'apporter.

    Zob

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    un chown apache

    un chmod 700

    comme cela, seuls les scripts php peuvent lire...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    renseigne toi sur les htaccess aussi
    Alunissage : Procédé technique consistant à déposer des imbéciles sur un rêve enfantin.

    Cours | FAQ | Sources Javascript
    Cours | FAQ | Sources PHP
    Mes Articles

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Ok donc je change le propriétaire des fichiers.
    je les rends lisible qu'avec les scripts PHP.

    Question : je travaille sous windows : est ce grave docteur?
    y-t-il des fonctions php qui permettent de changer les propriétaires et les droits d'un fichiers (je me mets à chercher en parallèle dès maintenant)?

    en ce qui concerne le .htaccess, j'avoue que tout ce que j'ai trouvé m'a paru à la fois simple et compliqué dès que j'ai essayé de le mettre en application.

    merci déjà pour ces solutions

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Avec un htaccess avec deny from all, tu peux quand même accéder à tes fichiers par un include.
    Pour les images, est-ce que tu ne peux pas lire le fichier (fopen()), et renvoyer le contenu avec les headers adéquats ?

  6. #6
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    sous windows, la gestion des droits est inexistante... ou presque


    il te faut un .htaccess qui limite l'accès à localhost...
    pour les images, il te faut utiliser ces fonctions http://www.php.net/manual/fr/ref.image.php
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  7. #7
    Membre éclairé Avatar de Death83
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 667
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 667
    Points : 878
    Points
    878
    Par défaut
    Ou alors avec un htpasswd ou la seul ceut qui ont le mot de passe pouront y acceder
    manganimes (en construction) -
    zemanga

  8. #8
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par Death83
    Ou alors avec un htpasswd ou la seul ceut qui ont le mot de passe pouront y acceder

    si j'ai bien compris, il veut protéger l'accés à certaines ressources via une authentification par script. De plus, si tu bloques l'accès avec un htaccess, les images ciblées dans la propriété src de la balise img d'une page ne s'afficheront pas.

    La solution la plus simple à mon avis, est de bloquer l'accès à ce répertoire avec un htaccess (deny from all) et pour les ressources, de demander à PHP de les afficher avec une fonction header et un content-type image.


  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par ska_root
    La solution la plus simple à mon avis, est de bloquer l'accès à ce répertoire avec un htaccess (deny from all) et pour les ressources, de demander à PHP de les afficher avec une fonction header et un content-type image.

    C'est exactement ce que j'ai suggéré à 13h48

  10. #10
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    Citation Envoyé par vg33
    C'est exactement ce que j'ai suggéré à 13h48
    un train peut en cacher un autre...

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Merci
    Je vais donc chercher dans ce sens là.

    Dès que je trouve je vous ferai part de ma solution.


    Merci

  12. #12
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Re-bonjour à tous

    Encore un petit problème

    sur le script suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    image.php <?php
     header ("Content-type: image/png");
        $im = ImageCreate (200, 100)
                or die ("Erreur lors de la création de l'image");        
        $couleur_fond = ImageColorAllocate ($im, 255, 0, 0);
        ImagePng ($im); 
    ?>
    Puis sur la page d'appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    image2.php
    <img src="image.php">
    il devrait normalement me sortir un carre rouge mais il ne sort rien comme si l'image n'existait pas

    la bibliothèque gd2 est activée. Je ne vois pas trop d'où ca pourrait venir.[/code]

  13. #13
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    deja, est-ce que ca marche quand tu l'appelles directement ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  14. #14
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Non ca me renvoie une série de caractère imbouffable

  15. #15
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    et avec cette syntaxe... ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-Type: image/png");
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  16. #16
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Non il me renvoie encore les mêmes caractères.
    Visiblement c'est la fonction header qui ne doit pas passer (je n'ai pas accès aux erreurs car je ne travaille pas directement sur le serveur qui n'est pas à coté de moi)

    Y a t il des bibliothèques à activer?

  17. #17
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    OK ce script fonctionne mais avec des ' a la place des "
    je trouve la solution à mon problème je l'expose et je mets un résolu

    Merci

  18. #18
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Points : 56
    Points
    56
    Par défaut
    dans le src de ton image, fait appel a image.php?nom=lenom
    Puis fait seulement un include("$path".$_GET['nom']);

    tu vas voir ca marche, en tout c'est ce que je fais.

  19. #19
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    Donc j'ai opté pour une solution .htaccess qui interdit l'acces à toutes les données du répertoire privé et un chargement des photos par un header.

    ma page php qui affiche mes vignettes est de la forme suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo "<td width=\"140\" height=\"140\" style=\"text-align:center\" >
    			<img  src=\"photo.php?f=id_photo\" ALIGN=\"ABSMIDDLE\" ></td>";
    ma page photo.php va créer ma photo. attention avec les ' ou les " dans le header. il faut essayer avec les deux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <?
    header('Content-Type: image/jpeg');
    $id_photo=$_GET['f'];
    ....
    $im = imagecreatefromjpeg("$fichier");     // arborescence + fichier    
    Imagejpeg($im);
    ?>

    J'ai coupé du code. Par contre ce qui me gene dans cette technique c'est qu'a chaque fois que la page photo.php est appelé il y a un connection à la BDD mysql pour aller chercher le nom et le chemin du fichier.

    J'ai essayé la tchnique de TobyKaos mais si le nom de la photo contient un espace alors le nom est coupé.
    J'avais pensé à une connection persistante ou une variable de session.
    Pour la variable de session :
    Quand je mets le chemin dans $_SESSION['chemin'][$i] (pour chaque image) ca ne fonctionne pas alors que si je mets $_SESSION['chemin'] il me renvoie le chemin de la dernière vignette. bizarre que ca ne fonctionne pas toujours.

    Bref c'est lent mais ca marche.

    Merci beaucoup pour votre aide à tous en espérant que mon explication soit compréhensible.

    Zob

  20. #20
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par TobyKaos
    dans le src de ton image, fait appel a image.php?nom=lenom
    Puis fait seulement un include("$path".$_GET['nom']);

    tu vas voir ca marche, en tout c'est ce que je fais.
    ARGHHH ! En plein dans la faille include ! Et vive le piratage

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

Discussions similaires

  1. [JTable] Interdire la modification des données ?
    Par Cyborg289 dans le forum Composants
    Réponses: 7
    Dernier message: 25/02/2013, 10h40
  2. Réponses: 2
    Dernier message: 05/11/2009, 17h34
  3. Réponses: 2
    Dernier message: 27/07/2006, 10h35
  4. interdir d'introduire des données ds un combobox
    Par colombe dans le forum Bases de données
    Réponses: 6
    Dernier message: 07/06/2006, 12h32
  5. Temps d'accès à des données dans un fichier
    Par TONIAPEL dans le forum Assembleur
    Réponses: 5
    Dernier message: 28/09/2003, 15h21

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