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é] sécurité login password


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut [Sécurité] sécurité login password
    Bonjour, je suis nouveau en conception de sites sécurisés et je voudrais avoir un avis d'expert...

    Ma page d'accueil est un formulaire demandant login et password. Les login/password valides sont stockés dans une base de donnée et j'ai une fonction php qui vérifie si l'utilisateur a rentré un log/passwd valide.

    En gros, je me demande si il est possible de cracker mon site facilement ou non ou si c'est carrément impossible... Merci de vos réponses.


    Encore merci

    ps: Quand je dis cracker le site, c'est se faire passer pour quelqu'un d'autre sans posséder le log/pass évidemment
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  2. #2
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Bonjour,

    Tu utilises POST pour envoyer les infos, mais les infos sont envoyées en clair.
    Il me semble qu'à part intercepter le login/password pendant le transfert, la sécurité est plutôt bonne. Bon, pour l'améliorer, tu pourrais éventuellement utiliser HTTPS.

    Celà dit, concernant le code source de la page, j'ai vu que tu as de l'HTML avant la balise <html> marquant le début de la page...
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  3. #3
    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
    Peux-tu poster le code du script d'authentification ?

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 147
    Points : 109
    Points
    109
    Par défaut
    Bonjour,

    je ne sais pas si cela peut aussi vous intéresser mais avec un aspirateur de site, on peut quand même voir la page protéger.

    Donc en utilisant le https, ça pourrait résoudre le problème comme dit plus haut.

  5. #5
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    L'authentification se fait sur deux fichiers.

    1)
    echo "
    <html>
    <head>
    <title>Formulaire d'identification</title>
    </head>
    ";

    setDebutZonePos("absolute", 100, 250);

    echo "
    <form action=\"XXXXX.php?saisie=$saisie\" method=\"post\">
    login : <input type=\"text\" name=\"login\">
    <br />
    mot de passe : <input type=\"password\" name=\"pwd\"><br />
    <br><input type=\"submit\" value=\"Connexion\">
    </form>
    ";

    setFinZonePos();

    echo "
    </body>
    </html>
    ";


    2)
    if (isset($_POST['login']) && isset($_POST['pwd'])) {

    // on vérifie les informations du formulaire, à savoir si le pseudo saisi est bien un pseudo autorisé, de même pour le mot de passe
    $dir = goodLogBDD($_POST['login'], $_POST['pwd']);

    if ($dir != "") //$login_valide == $_POST['login'] && $pwd_valide == $_POST['pwd'])
    {
    // on redirige notre visiteur vers une page de notre section membre

    $_SESSION['login'] = $_POST['login'];

    if ($saisieLog == 1)
    {
    echo "
    <script language=\"JavaScript\">
    document.location = \"variables.php?page=".$_SESSION['page']."&feuille=1\"
    </script>
    ";
    }
    else
    {
    echo "
    <script language=\"JavaScript\">
    document.location = \"variables.php?page=1\"
    </script>
    ";
    }
    //header ('location: variables.php?page=1');
    }
    else {
    // Le visiteur n'a pas été reconnu comme étant membre de notre site. On utilise alors un petit javascript lui signalant ce fait
    echo '<body onLoad="alert(\'Membre non reconnu ...\')">';
    // puis on le redirige vers la page d'accueil
    echo '<meta http-equiv="refresh" content="0;URL=index.php">';
    }

    }
    else {
    echo 'Les variables du formulaire ne sont pas déclarées.';
    }


    Voilà, une autre question , c'est facile pour un hacker d'attendre que qqun se log pour intercepter les POST ???
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  6. #6
    Membre averti
    Avatar de Julien.alkaza
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    239
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 239
    Points : 363
    Points
    363
    Par défaut
    Pour cela il faut qu'il soit entre les deux machines...Sinon il ne peut pas intercepter les données...
    Ou alors il a placé un bout de soft qui redirige les flux...
    Admin Réseaux & Systèmes.

    Red Hat Certified Technician...#604006101698235

  7. #7
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut conseil
    Pour y voir plus clair dans ton code, place des ' dans les echo au lieu de \". Dans ton exemple le code est court, mais pour des gros projets, il est bien plus pratique et cela fait un seul caractère au lieu de deux.
    Business, Stratégie, Leadership
    Toujours à l'écoute du marché : Surtout en Suisse ! ;-)

  8. #8
    Inscrit
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    531
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 531
    Points : 282
    Points
    282
    Par défaut
    Citation Envoyé par Henry9
    Bonjour,

    je ne sais pas si cela peut aussi vous intéresser mais avec un aspirateur de site, on peut quand même voir la page protéger.

    Donc en utilisant le https, ça pourrait résoudre le problème comme dit plus haut.
    Pour éviter cela, il faut faire un test vérifiant l'existence d'une variable de session initialisée après identification réussie, si je ne m'abuse. En cas d'absence de cette variable de session, on fait un header qui redirige vers le formulaire.
    Sinon c'est complètement artificiel comme formulaire d'identification.

  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
    C'est la fonction goodLogBDD() qu'il faut que tu postes pour qu'on te dise si ton script est sécurisé.

  10. #10
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    function openBDD()
    {
    global $BDD;

    // === CONNEXION A LA BD ===
    // connexion
    mysql_connect($BDD[0], $BDD[1], $BDD[2]);
    mysql_select_db($BDD[3]);
    }


    function goodLogBDD($log, $pass)
    {
    global $BDD;
    openBDD();

    // Requête de sélection des messages
    $SQL = "SELECT * FROM " . $BDD[4] . " WHERE nom=\"" . $log . "\" LIMIT 0, 30";

    $res = mysql_query($SQL);
    $val = mysql_fetch_array($res);

    $prenom=$val["prenom"];
    closeBDD();

    if ($prenom === $pass)
    return "OK";
    return "";
    }



    Alors j'ai mes paramètres de bdd déclarés en variables globales, est-ce dangereux? QQun peut-il trouver quel est le nom de mes variables globales et les récupérer et ainsi accéder à la BDD et avoir les log et pass de mes clients???

    Merci de vos réponses...
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  11. #11
    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
    Tu ne valides pas tes POST avant la requête SQL. Tu risques une injection SQL.
    Ici, ça ne paraît pas très dangereux, mais par principe tu devrais systématiquement passer tes données utilisateur par mysql_real_escape_string() avant de faire une requête.

  12. #12
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    Euh... Tu peux préciser un peu cette fonction sql ?? car je n'ai pas bien saisi...

    Merci
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  13. #13
    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 jc_cornic
    Euh... Tu peux préciser un peu cette fonction sql ?? car je n'ai pas bien saisi...

    Merci
    Il faut lire le manuel php
    En gros, mysql_real_escape_string() échappe tous les caractères dangereux permettant notamment les injections SQL.

    Pour ton code, cela reviendrait à écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $SQL = 'SELECT nom, prenom FROM ' . $BDD[4] . ' WHERE nom="' . mysql_real_escape_string($log) . '"';

  14. #14
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    OK, merci pour l'info, et sinon vg33, que penses tu de mon code au niveau sécurité ?? dois-je utiliser le chiffrage md5 ou autre cryptage ou est-ce que ca suffit ?

    Merci
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  15. #15
    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 jc_cornic
    OK, merci pour l'info, et sinon vg33, que penses tu de mon code au niveau sécurité ?? dois-je utiliser le chiffrage md5 ou autre cryptage ou est-ce que ca suffit ?

    Merci
    C'est une vaste question... Je te conseille de lire les tutoriels sur la sécurité...
    En quelques mots :
    1) Le hashage (md5, sha1...) de mdp côté client est une bonne solution pour éviter le shiffing, à condition d'utiliser un grain de sel.
    2) Le hashage des mdp en bdd interdit à l'admin de se connecter avec l'id d'un membre, ce qui est une bonne chose.
    3) Une sécurité réelle (et encore) ne peut exister dans utiliser HTTPS/SSL/SSH...
    Conclusion : à toi d'adapter ta sécurité au niveau de confidentialité que tu dois respecter...

  16. #16
    Membre averti Avatar de NeHuS
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 343
    Points : 316
    Points
    316
    Par défaut
    Parse error: syntax error, unexpected $end in /home.6/a/c/t/actegest/www/newDefine.php on line 1244
    Cliquez sur

    Evitez de mettre Probleme
    dans les titres de vos posts

  17. #17
    Membre éclairé
    Avatar de jc_cornic
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    623
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 623
    Points : 823
    Points
    823
    Par défaut
    dis moi nehus, tu as testé ca quand??? car je viens de tester et je n'ai pas ton msg d'erreur, peux-tu me donner ton OS et explorer (IE, firefox...)

    Merci
    VELOMASTER, idée cadeau ? un jeu de plateau

    Hummmmm, des donuts !!!!

    Merci de penser à , et et aussi

  18. #18
    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 NeHuS
    Que vient faire ce post ici ?

Discussions similaires

  1. Fenêtre de sécurité Login + Password
    Par moilou2 dans le forum IHM
    Réponses: 0
    Dernier message: 27/05/2008, 15h17
  2. Client lourd, connexion db, login, password et sécurité ?
    Par elitost dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 27/09/2007, 17h04
  3. [Sécurité] Écran Login/Mot de passe d'Access
    Par mathias dans le forum Sécurité
    Réponses: 3
    Dernier message: 25/09/2006, 16h11
  4. Réponses: 3
    Dernier message: 18/08/2006, 08h52
  5. [Sécurité] auto-login
    Par manaboko dans le forum Langage
    Réponses: 6
    Dernier message: 23/11/2005, 06h49

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