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 :

Précisions sur le tutoriel "sécuriser vos sessions avec une base de données"


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 138
    Billets dans le blog
    5
    Par défaut Précisions sur le tutoriel "sécuriser vos sessions avec une base de données"
    Salut a tous
    Je viens de me plonger dans ce tutoriel
    [url]http://a-pellegrini.developpez.com/tutoriels/php/session-db/[url]
    Mais j'ai quelques soucis.
    Tout d'abord je me fais je ne vois pas bien à quoi correspond PREFIX_DB_SITE dans la fonction ci dessous.
    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
     
    function openSession($userid) {
    	global $db;
     
    	// On supprime la session en cours
    	$deleteSQL = $db->prepare('DELETE FROM '.PREFIX_DB_SITE.'session WHERE userid = :userid');
    	$deleteSQL->execute(array(':userid' => $userid));
     
    	// Re-génération du sid
    	session_regenerate_id();
     
    	// On insère le nouvel id de session dans la db
    	$insertSQL = $db->prepare('INSERT INTO '.PREFIX_DB_SITE.'session (sid, userid)
    				     VALUES (:sid, :userid)');
    	$insertSQL->execute(array(':sid' => session_id(),
    				  ':userid' => $userid,
    				  ':ip' => getIP(),
    				  ':browser' => getBrowser(),
    	));
     
    	return TRUE;
    }
    D'autre part j'ai cette erreur Fatal error: Call to a member function prepare() on a non-object

    Doit on définir quelque part ce qu'est la variable $db ?

  2. #2
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Citation Envoyé par Gouyon Voir le message
    D'autre part j'ai cette erreur Fatal error: Call to a member function prepare() on a non-object

    Doit on définir quelque part ce qu'est la variable $db ?
    Tout à fait, dans le script appelant car la variable est déclarée avec global.

    http://fr.php.net/manual/fr/language...bles.scope.php

  3. #3
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 138
    Billets dans le blog
    5
    Par défaut
    D'accord je vois. Par contre ce que je ne vois pas c'est qu'est ce que c'est comme type de variable $db. Manifestement c'est une class donc j'ai été fouillé dans la doc de PHP un peu pour savoir de quoi il retournait.
    J'ai trouvé une classe mysqli qui devrait convenir puisque j'utilise une base mySQL.
    Je vais tester ça demain

  4. #4
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Visiblement, $db est un objet PDO, mais c'est vrai que cela manque un peu de précisions dans le tuto.

    Tu peux aller voir là : http://fr.php.net/manual/fr/book.pdo.php

  5. #5
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 138
    Billets dans le blog
    5
    Par défaut
    Il y a un autre problème qui est que je dois me connecter à la base pour accéder à la table des utilisateurs. Pour celà je dois mettre en clair dans mon script l'identifiant et le mot de passe pour la connexion. N'y a t'il pas là un problème de sécurité?

  6. #6
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Bonjour,

    Il faut bien que tu indiques à ton script php comment se connecter à ta base de données.

    Ce n'est pas en soit une faille de sécurité. Ce qui peut l'être, par contre, c'est un mauvais paramétrage du serveur web qui permettrait par exemple de récupérer un script php non interprété, ou encore une faille d'un script d'upload permettant à un utilisateur de charger sur le serveur du code exécutable (par exemple un script php).

    Il existe des moyens de limiter certaines possibilités, par exemple en mettant ces informations dans un fichier de configuration non accessible à travers le serveur web (par le protocole http), mais il n'existe pas de solution 100% sûre.

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/04/2012, 12h42
  2. Réponses: 3
    Dernier message: 26/01/2011, 12h21
  3. Réponses: 7
    Dernier message: 17/03/2008, 15h48
  4. Stocker les sessions dans une base de données
    Par mic79 dans le forum Langage
    Réponses: 7
    Dernier message: 06/04/2006, 21h57
  5. communiquer avec une base de données sur internet
    Par richard038 dans le forum Bases de données
    Réponses: 7
    Dernier message: 15/02/2006, 18h01

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