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 :

Authentification php


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Authentification php
    Bonjour,

    J'ai "codé" un petit espace client pour pouvoir échanger des données sur le site de mon entreprise mais j'ai un problème que je n'arrive pas à résoudre.

    Quand je me connecte à partir de mon site sans http://www, les variables de sessions ne semblent pas se transmettre alors que si j'accède à mon site depuis l'adresse complète, là pas de problème.

    Je suis chez OVH.

    Alors le code php dans le header intégré aux pages simples.

    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
    29
    30
    31
    32
    33
    <?php if($_SERVER['SERVER_PORT'] != 80) die(header('Location: http://'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']));
     
    if(isset($submit) && !empty($_POST['login']) && !empty($_POST['pass'])){
        extract($_POST);
        $pass = sha1($pass);
     
     
        mysql_connect($url,$database_user,$database_mdp);
        mysql_select_db($database);
        $sql = " SELECT * FROM users WHERE login='$login' AND pass='$pass'";
        $req = mysql_query($sql) or die(mysql_error());
        $ligne_req = mysql_fetch_assoc($req);
        $type = $ligne_req['type'];
     
    session_start();
     
        if(mysql_num_rows($req)>0){
            $_SESSION['login'] = $_POST['login'];
            $_SESSION['pass'] = $_POST['pass'];
     
            if($type == 1){       header('Location:https://www.xxxxx.com/espace_client.php');}else{
     
            header('Location:https://www.xxxxx.com/espace_ftp.php'); }
     
    }else{ 
    ?>  
     
    Fenêtre erreur
     
    <?php
        }
    }
    ?>
    Et le code sur la page espace_ftp

    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
    29
    30
    31
    32
    33
    34
    <?php
     
    session_start();
     
    $date=date("d-m-Y H:i:s");
     
        if(isset($_SESSION['login']) && isset($_SESSION['pass'])){
     
        mysql_connect($url,$database_user,$database_mdp);
        mysql_select_db($database);
     
                $sql = " SELECT id FROM users WHERE login='$login' AND pass='$pass'";
                $req = mysql_query($sql) or die(mysql_error());
     
                        if(mysql_num_rows($req)>0){
                           $log = 1;
                        }else{ 
                            $log = 0;}
     
                }else{ 
     
                    $log = 0;}
     
    if($log == 1){
     
                                    $update_date = "UPDATE users SET derniere_connection='$date' where login ='$login'";
                                    $res_update_date = mysql_query($update_date)or die("Erreur : ".$update_date);
     
    }else{
        header("Location:index.php?test=$login");
    }
     
     
    ?>
    Du coup je suis redirigé vers index.php et la l'url me montre "index.php?test="

    Si quelqu'un à une idée je suis preneur. Si y'a des améliorations voir des erreurs niveau sécurité je suis aussi preneur, je suis pas un expert en développement

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    avant toute chose:

    GROSSE faille de sécurité de débutant xD
    tape ton_login' OR '1==1';# en tant que login et met un mot de passe érroné. hop tu te connectes sur n'importe quel compte utilisateur sans besoin du mot de passe...

    Bon maintenant pour ton problème c'est pas tout simplement qu'il faut faire commencer ton header par session start?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Je dois être naze j'arrive pas a faire fonctionner la faille, j'ai bien mon pop up qui me dit identifiant incorrect.

    Concernant le session start, sa change rien au début du header

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 16
    Points : 20
    Points
    20
    Par défaut
    Salut,
    Comme l'a dit gotogog, grosse faille d'injection SQL ! Toujours se méfier des données envoyé par l'utilisateur, et par conséquent au minimum utiliser la fonction mysql_real_escape_string($variable) avant d'insérer la variable dans une requête SQL.

    Pour ton problème, cela pourrais venir de ton navigateur (et plus particulierement des cookies) mais aussi de ton serveur web qui créé une session pour un site. Techniquement, même si dans ton cas l'adresse 123.fr et www.123.fr pointent vers le même site, il pourrais en etre autrement et que ce soit deux site différent, donc gestion des cookies et sessions différentes.

    Connecte toi depuis ton site via l'url www. et navigue dessus, tu devrais n'avoir aucun problème tant que tu reste avec cette url, tout comme tu n'aura aucun problème si tu te connecte via l'url sans www. et que tu continue de naviguer sans.
    La solution: Utiliser tout le temps les www. devant ton site, ou ne pas les utiliser du tout.

    Ensuite, pour ton code espace_ftp, tu utilise la variable $login et $pass dans ta requête mais tu ne les déclare pas avant, il y a un problème de ce coté.
    Je pense que vu ton code tu dois vouloir utiliser les données de session sur cette page, donc il te manque un $login = $_SESSION['login']; et un $pass = $_SESSION['pass']; après ton isset($_SESSION['pass'])

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/08/2006, 11h13
  2. Réponses: 2
    Dernier message: 04/08/2006, 14h23
  3. [Sécurité] Pb authentification PHP
    Par bodybody22000 dans le forum Langage
    Réponses: 4
    Dernier message: 09/06/2006, 09h28
  4. Script page administration et authentification Php
    Par mastercartman dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 11/03/2006, 17h34
  5. [XML] [cURL] Authentification Php récupération de données
    Par thibaut06 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 13/02/2006, 14h23

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