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 :

Probleme de header() pour sécuriser son site


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Points : 46
    Points
    46
    Par défaut Probleme de header() pour sécuriser son site
    Bonjour a tous,

    Je laisse un petit message en espérant que quelqu'un pourra venir a ma rescousse. J'ai un problème, je m'explique :

    Afin de restreindre l'accès a certaines zones de mon site j'ai créé cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function isUser() {
        if(empty($_SESSION['login'])) {
            header('Location: index.php?page=Login');
        }
    }
    J'ai développe mon application sur un serveur local aucun problème, seulement aujourd'hui quand je met mes fichiers sur mon serveur en ligne je m'aperçois que les header() ne sont pas prit en compte. ce qui donne accès a n'importe qui puisque l'utilisateur n'est pas redirigé.

    En cherchant sur internet j'ai vu que la fonction header() ne devait pas etre utilisée après du code html, seulement parfois je dois utiliser cette fonction au milieu de mon code html.

    Quelle est donc la solution pour restreindre l'accès a un utilisateur a une page par exemple.

    Merci par avance pour vos réponses.

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    ton idée n'est pas mauvaise bien que je testerai plutot avec isset qu'avec empty non ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    session_start();
     
    if(!isset($_SESSION['login']))
    	 header('Location: index.php?page=Login');

    Qu'est ce qui t'empeches de placer cette portion de code en haut de ta page php ?

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    Et bien le script ou apparait le header constitue un module qui est inclut dans un bloc au centre du site. et donc par consequant mm en le mettant en haut de mon script il y a de l'html avant.

    pour etre plus clair mon index.php fait un require de ce script dans une div

  4. #4
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Citation Envoyé par Reminouche Voir le message
    Et bien le script ou apparait le header constitue un module qui est inclut dans un bloc au centre du site. et donc par consequant mm en le mettant en haut de mon script il y a de l'html avant.

    pour etre plus clair mon index.php fait un require de ce script dans une div
    Au pire faire une redirection via javascript alors généré par php ?Mais si l'utilisateur désactive js pas top...

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    oui voila c'est pourquoi j'ai précisé "sécurisé" car desactiver javascript c'est a la portée de tous.

  6. #6
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par Reminouche
    Et bien le script ou apparait le header constitue un module qui est inclut dans un bloc au centre du site. et donc par consequant mm en le mettant en haut de mon script il y a de l'html avant.

    pour etre plus clair mon index.php fait un require de ce script dans une div
    C'est donc un problème de conception de tes pages.
    Cette vérification, pourtant, peut très bien se faire bien avant, et même doit se faire avant.

    Je ne sais pas, mais sort ce bout de script du module, ensuite, il faudrait qu'il soit juste après le session_start().
    D'ailleurs, comment tes pages sont elles organisées par rapport au session_start(), qui lui d'ailleurs doit aussi être appelé avant le moindre echo ou autre contenu HTML.
    Et la connexion de la Bdd aussi par exemple ?

    En somme, il y aurait il pas moyen de rassembler divers pure traitements Php dans un fichier (genre top_page.php) qui serait communs à toutes tes pages, qui serait en quelque sorte un point d'entré communs.

    Ensuite, tu devrais aussi avoir quelque chose qui te dirait que telle ou telle page demande d'être sécurisée, les autres non.
    Ca peut être une info dans la Bdd, ou dans un simple tableau Php par exemple.
    Cette info devra aussi être dans ce top_page.php, ce qui permettra de faire une alternative (SI page sécurisé ET pas de session login ALORS -> header).
    Enfin, ceci est une méthode parmi d'autres

  7. #7
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2009
    Messages
    195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2009
    Messages : 195
    Points : 148
    Points
    148
    Par défaut
    Bonjour j'utilise ce système de sécurisation sur mon site Web.
    Pour chaque page étant du contenu réservé ( non accessible sans authentification ) tu dois démarrer ta page par ces quelques lignes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    	session_start();
    	if ((!isset($_SESSION['login'])) || (empty($_SESSION['login'])))
    	{
                 //Ici tu met le code que tu souhaite afficher dans le cas où ton utilisateur ne s'est pas préalablement logguer
                 //Tu peux même ajouter une balise pour rafraichir la page et rediriger l'utilisateur vers la page d'authentification
                 <meta http-equiv="refresh" content="3;URL=log.php">
    	}
    ?>
    En espérant avoir pu t'éclaircir sur le problème

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    désolée, mais tu vois bien que c'est une mauvaise vision des choses qui conduit a cela, en effet ton php tourne sur le serveur en une ou deux secondes, il envoie au visiteur sa page html, les cSS JS etc... puis disparait.

    Donc le fait d'étre logué ou pas est joué d'avance.Tu dois chercher a te battre pour que ta logique session==>gestion Cookies==>contrôles MySql
    etc ... soient avant tout envoie de HTML vers le client.

    Même si tu utilise la bufferisation ob_start tu as intéret pour toi même a te battre pour rendre ton développement plus logique.

    solution avec ob_start, dés le début de ta page tu lances
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?PHP
    ob_start(); 
    ?>
    Ainsi tout tes echo, ecriture directe apres ?> ou toute méthode d'écriture vers le client, sera bloqué, donc tu pourras lancer un header quand tu veux

    En bas de ta page tu écris d'un seul trait ton buffer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?PHP
    ob_end_flush();
    ?>
    Je te conseilles tout de même de lire la doc sur la bufferisation
    Dernière modification par Invité ; 24/04/2010 à 08h42.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    Merci pour toute vos réponses. J'ai donc réorganiser la conception de mon script et gérer les header avant l'écriture de code html.

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

Discussions similaires

  1. Quels outils logiciels utiliser pour faire son site ?
    Par tripper.dim dans le forum Outils
    Réponses: 36
    Dernier message: 22/05/2008, 18h39
  2. Quoi choisir pour créer son site
    Par damien77 dans le forum Autres langages pour le Web
    Réponses: 2
    Dernier message: 18/06/2007, 10h44
  3. Besoin d'aide pour sécuriser un site internet
    Par Polux000 dans le forum Sécurité
    Réponses: 4
    Dernier message: 25/01/2006, 12h02
  4. plugin IE pour interroger son site web
    Par Linuss dans le forum IE
    Réponses: 5
    Dernier message: 16/12/2005, 07h20
  5. Réponses: 4
    Dernier message: 13/12/2005, 18h14

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