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écurité] Mon accès est-il bien sécurisé ?


Sujet :

Langage PHP

  1. #1
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut [Sécurité] Mon accès est-il bien sécurisé ?
    Bonjour à toutes et à tous,

    j'ai fait une partie admin protégé par login/mdp via MYSQL et les sessions.

    Lorsque l'authentification est correcte, je crée ces variables de sessions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $_SESSION['authentification'] = TRUE;
    $_SESSION['login'] = $login;
    $_SESSION['prenom'] = $admin_prenom;
    $_SESSION['nom'] = $admin_nom;
    Maintenant ma question, c'est : est-ce le script suivant sécurise suffisamment bien la page Web le contenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    session_start();
    require_once("constantes.inc.php");
     
    if ($_SESSION["authentification"] === TRUE && $_SESSION["login"] && $_SESSION["prenom"] && $_SESSION["nom"]) {
    	// aucun problème, l'utilisateur peut continuer...
    } else {
    	// l'utilisateur n'est pas autorisé à accéder à cette page, il est reconduit sur la page d'accueil du site
    	header("Location: " . $URL_SITE);
    	exit();
    }
    ?>
    Merci d'avance

    @ bientôt

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 142
    Points : 56
    Points
    56
    Par défaut
    ceci serait mieu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if ($_SESSION["authentification"] == TRUE && isset($_SESSION["login"]) && isset($_SESSION["prenom"]) && isset($_SESSION["nom"])) {
    	// aucun problème, l'utilisateur peut continuer...
    } else {
    	// l'utilisateur n'est pas autorisé à accéder à cette page, il est reconduit sur la page d'accueil du site
    	header("Location: " . $URL_SITE);
    	exit();
    }

  3. #3
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Non il n'y a aucune sécurité avec ce que tu fais.

    Ton script va creer un variable de session genre :
    login:s:6:"yoshio";prenom:s:4:"truc"; ...
    Si un utilisateur arrive a savoir l'identifiant de session, il pourra récupérer les information de cette session. Donc ce n'est pas tres sécurisé.

    Pour rendre plus difficile le vol de session, il faut déja utiliser la fonction session_regenerate_id(). (il faut pas régénérer la session à chaque page non plus).

    Ensuite tu peux vérifire s'il n'y a pas de vol de session en stockant en plus des info que tu stocke deja (cad auth, login, prenom, ...), le naviguateur web de l'utilisteur avec $_SERVER['HTTP_USER_AGENT'].
    Un inconvéniant si l'utilisateur s'amuse a passer d'internet a firefox d'une page a l'autre il va devoir se reloguer chaque fois; mais je doute fort que ca arrive beaucoup.

    Ensuite tu peux utiliser un token unique et le propager dans l'url.

    Tiens tout est décrit la dedans : http://phpsecurity.org/ch04.pdf

  4. #4
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    Merci à vous,

    par contre je ne comprends pas trop ta méthode Yoshio...
    Admettons qu'après authentification, je stocke les infos comme ceci dans la base :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    session_start();
    $query = "INSERT INTO `session` (sid, id_admin, ip, browser) 
                    VALUES ('".session_id()."', ".$admin_id.", '".getIP()."', '".getBrowser()."');";
    [...]
    Pour s'assurer que c'est la bonne personne, il faut tester en début de chaque page sécurisée si ses infos (SID, admin_id, IP et navigateur) correspondent bien à celle enregistrées dans la base ?


  5. #5
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Aurais tu lu le lien ... ca n'a pas l'air d'être le cas.

  6. #6
    Membre actif
    Inscrit en
    Octobre 2005
    Messages
    908
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 908
    Points : 271
    Points
    271
    Par défaut
    bah je t'avouerais qu'un article en anglais me fait vite décrocher...

    donc mon idée n'est pas bonne ?

  7. #7
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Utiliser une base de données pour sécuriser vos sessions de ma signature.

    Ton idée est bonne mais stocké l'ip c'est assez embetant; si mon routeur reboot et que je laisse tourner firefox je veux pourvoir recup toute mes session. Dans ton cas ca va être dure.

    Et je te conseille FORTEMENT de lire cet article même s'il est en anglais.

Discussions similaires

  1. [PHP 5.3] Mon pattern est il bien MVC ?
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 07/07/2011, 23h03
  2. Réponses: 36
    Dernier message: 26/03/2007, 20h00
  3. [CF][C#]Comment déterminer si mon PPC est bien connecté?
    Par royrremi dans le forum Windows Mobile
    Réponses: 2
    Dernier message: 07/03/2006, 15h35
  4. Réponses: 3
    Dernier message: 23/02/2006, 08h30

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