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é] Y à t'il une faille ?


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Nadd
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 160
    Points : 95
    Points
    95
    Par défaut [Sécurité] Y à t'il une faille ?
    Bonjour,
    Je m'apprête à mettre en ligne mon nouveau site web et je suis de plus en plus inquiêt en ce qui concerne la sécurité de l'entieretée du site.

    Mon site est conçu à partir du phpBB : Templates, Common.php, ...
    J'ai cependant élaboré mon propre système de session, voila ce qui m'inquiète.

    J'aimerais que vous analysiez mes blocs de code pour voir si faille il y a.

    Fichier de vérification :


    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
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?php
    session_start();
     
    if(isset($_POST['username']) && isset($_POST['userpassword'])) {
    $username = $_POST['username'];
    $userpassword = md5($_POST['userpassword']);
    if (lookat($username,$userpassword)==TRUE) {
    $_SESSION['AUTH'] = TRUE;
    $sql = "SELECT * FROM icb_users WHERE Username='".$username."'";
    if( !($result = $db->sql_query($sql)) )
    {
     die("Erreur -> Requête SQL");
    }
    if ( $row = $db->sql_fetchrow($result) )
    {
     $_SESSION['ID'] = $row['ID'];
     $_SESSION['USERNAME'] = $row['Username'];
     $_SESSION['LEVEL'] = $row['Level'];
     $_SESSION['NOM'] = $row['Nom'];
     $_SESSION['PRENOM'] = $row['Prenom'];
     $_SESSION['ADRESSE'] = $row['Adresse'];
     $_SESSION['VILLE'] = $row['Ville'];
     $_SESSION['PROVINCE'] = $row['Province'];
     $_SESSION['TELFIX'] = $row['TelFix'];
     $_SESSION['TELGSM'] = $row['TelGSM'];
     $_SESSION['EMAIL'] = $row['Email'];
     $_SESSION['DATE'] = $row['Date'];
     
     
     $sql = "INSERT INTO `icb_events` ( `ID` , `Action` , `Concern` , `Time` )
    VALUES (NULL, 'Connection', '".$_SESSION['USERNAME']."', '$date_ - $time');";
     @mysql_query($sql);
    $db->sql_freeresult($result);
    }
    header("Location: members_board_index.php");
    }
    else {
    header("Location: login.php");
    }
    }
    ?>
    Fichier contenant la fonction lookat


    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
     
    <?php
    function lookat($username,$userpassword) {
    global $db;
    $username_ = mysql_real_escape_string($username);
    $userpassword_ = mysql_real_escape_string($userpassword);
    $sql = "SELECT * FROM icb_users WHERE Username='".$username_."' AND Password='".$userpassword_."' AND Act='1';";
    if( !($result = $db->sql_query($sql)) )
    {
    header("Location: ../login.php");
    }
    if ( $row = $db->sql_fetchrow($result) )
    {
    return TRUE;
    }
    else{
    return FALSE;
    }
    }
    ?>
    En-tête de chaque fichier à accès réservé :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    session_start();
    if($_SESSION['AUTH'] != TRUE) {
    header("location: login.php");
    }
    En vous remerciant d'avance,

    Nadd.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    tu ne protèges aucune des variables qui passent dans la BDD à la première Injection SQL t'es bon...

    en plus ça sert à rien de tout stocker dans la session (à moins que tu en ai systématiquement besoin dans toutes les pages) il vaut mieux ne stocker que l'user_id et aller chercher le reste dans la BDD sur les pages où tu en as vraiment besoin : moins de ram utilisé, et moins de temps pour sauvegarder/charger les sessions à chaque fois
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Membre confirmé Avatar de dj-julio
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 745
    Points : 625
    Points
    625
    Par défaut
    lorsque tu récupères ce qu'à écrit un utilisateur, pense toujours à utiliser : mysql_real_escape_string

    tu éviteras ainsi d'avoir des injections SQL

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/12/2009, 11h58
  2. Réponses: 15
    Dernier message: 17/07/2009, 23h18
  3. Réponses: 0
    Dernier message: 15/07/2009, 12h16
  4. Réponses: 0
    Dernier message: 26/06/2009, 21h31

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