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 :

est ce suffisant pour securiser des sessions en php ?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2014
    Messages : 22
    Points : 13
    Points
    13
    Par défaut est ce suffisant pour securiser des sessions en php ?
    bonjours a tous
    désolé ma question ne surement pas bien claire
    je suis en train de creer un espace d'administration en php, les membres sont inscrit dans une base de données, et quand ils se connectent le script vérifie qu'il ont le bon mot de passe et cré une session
    voici le code pour se connecter
    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
    23
    24
    25
    26
    27
    28
     
    <?php
    if (isset($_POST['pseudo']) AND ($_POST['pass']))
    {
    $pseudo = $_POST['pseudo'];
    $pass_hache = sha1($_POST['pass']);
    require ('bdd.php');
    $req = $bdd->prepare('SELECT id FROM admin WHERE pseudo = :pseudo AND pass = :pass');
    $req->execute(array(
    'pseudo' => $pseudo,
    'pass' => $pass_hache));
    $resultat = $req->fetch();
    if (!$resultat)
    {
    echo 'mauvais identifiant ou mot de passe';
    }
    else
    {
    session_start();
    $_SESSION['id'] = $resultat['id'];
    $_SESSION['pseudo'] = $pseudo;
    header('location:espace.php');
    }
    }
    else
    {
    echo 'veuillez entrer un identifiant et un mot de passe';
    }
    maintenant sur chaque page que je veut proteger, j'ai mis le script suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    session_start();
    if (isset($_SESSION['id']) AND isset($_SESSION['pseudo']))
    {
    //le script de chaque page
    }
    else
    {
    header('location:index.php'); //retour a l’accueil pour te connecter 
    }
    ma question est : est ce suffisant pour garantir une bonne securité pour les membres ? y a t'il un risque que les session soient détournées ou autre ? si oui, pouvez vous me dire comment sécuriser ?
    merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux être intéressé par :
    http://cyberzoide.developpez.com/securite/session/

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Salut,

    Tu as fait la base. Pour mieux protéger tes sessions il faudrait utiliser ssl (https) ce qui protégerait tes identifiants de session et éviterait aussi que tes mots de passe transitent en clair dans les tuyaux.

    Après faut voir le niveau de protection que tu souhaites car le vol d'un identifiant de session requière des conditions particulières (complicité d'un administrateur réseau, ou piratage d'une liaison wifi, etc.) et n'est donc pas si facile si bien qu'on se contente souvent d'une liaison http pour un forum par exemple.

    Cela dit aujourd'hui les certificats ssl sont devenus plus abordables et aussi certains hébergeurs comme ovh proposent des ssl mutualisés ce qui permet par exemple de faire un espace administrateur sécurisé à moindre coût.

    Concernant ton code il faudrait un token pour s'assurer que la requête envoyée provient bien de ton formulaire et non pas d'un formulaire forgé provenant de l'extérieur.

    Après si tu veux aller un peu plus loin sans utiliser ssl, tu peux protéger tes mots de passe en les hashant côté client avant d'envoyer le post. Cela protège mieux tes mots de passe (qui ne transitent plus en clair) mais n'empêche pas les vols de session, il faut utiliser ssl pour un maximum de sécurité.

    Comme tu l'as lu si tu as suivi le lien donné par sabotage la sécurité doit être assurée correctement d'un bout à l'autre de la chaine, il faut donc aussi un bon professionnalisme des administrateurs serveur et des précautions minimales de la part du visiteurs.

    Au passage je m'étonne un peu de la colonne "id" de ta table. Normalement la colonne "login" doit être une clé primaire ce qui rend inutile une colonne "id"... (c'est pas une erreur mais juste inutile).

  4. #4
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2014
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    bonjours et désolé je n'ai pas pu repondre plus tôt
    concernant le lien que vous m'avez donné SABOTAGE j'ai vu le sommaire ça à l'air d'etre intéréssant donc jvé le lire
    ABCIWEB, merci bcp pour les explications,
    Concernant ton code il faudrait un token pour s'assurer que la requête envoyée provient bien de ton formulaire et non pas d'un formulaire forgé provenant de l'extérieur.
    ça c'est une exelente idée !
    tu peux protéger tes mots de passe en les hashant côté client avant ...
    euh la désolé j'ai pas compris O_o, comment hasher coté client ?
    pour ce qui est de la colonne 'id', j'ai appris dans le cour a faire comme ça, mais comme vous le dites c'est inutil
    merci bcp de votre aide a tout les deux

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par mouslim02 Voir le message
    euh la désolé j'ai pas compris O_o, comment hasher coté client ?
    Une réponse complète ici. Juste au passage sha1 est un peu dépassé aujourd'hui. On préfère sha256 ou encore mieux sha512 et y'a pas de problème pour trouver des fonctions javascript correspondantes, par exemple ici (sha3 sera encore mieux mais n'est pas encore implémenté dans php).

  6. #6
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Août 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Août 2014
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    merci bcp ABCIWEB

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 24/04/2007, 21h12
  2. Mybase est il suffisant pour mon application?
    Par jeff69 dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/10/2006, 12h39
  3. Réponses: 4
    Dernier message: 24/05/2006, 16h04
  4. [SQL2005 Express] Est ce suffisant pour ce projet ?
    Par portu dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 12/05/2006, 11h32
  5. Option pour samba pour fermer des sessions windows
    Par cybernetique dans le forum Réseau
    Réponses: 7
    Dernier message: 04/10/2005, 11h05

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