conseils secu pour php

Discussion dans 'Web, design' créé par Hacko, 1 Juin 2003.

Statut de la discussion:
Fermée.
  1. Offline
    Hacko Elite
    voila, je suis en train de modifier un site en php pour y rajouter forum, news, chat ....
    il y a un système de login fait avec des sessions php.

    Mais je me pose la question de la sécurité, alors, si vous avec des conseil, je suis prêt à vous écouter.

    pour héviter des problèmes lors des posts, j'ai déja enployé la fonction strip_tags() pour héviter le javascript et le php.


    d'avance merci pour tout vos conseils, puis, je ferais p-e appel à vous pour tester la securite quand il sera en place(hackers needed :wink: ).
    Hacko, 1 Juin 2003
    #1
  2. Offline
    PunkDeLuxe condom
    la session php n'est pas stockée ds l ordi client ?
    Il me semble que si donc des que le client a déco la session n'existe plus .... non ? :s

    Donc je pense que tu peu laisse comme ca en session ...
    PunkDeLuxe, 1 Juin 2003
    #2
  3. Offline
    kokotchY Elite
    un truc que tu dois absolument faire est de vérifié a chaque page que le user est connecté... car on peut toujours trouver le nom des pages...
    kokotchY, 1 Juin 2003
    #3
  4. Offline
    PunkDeLuxe condom

    ben celui ki fai pas ca c grave ... :wink: :D
    PunkDeLuxe, 1 Juin 2003
    #4
  5. Offline
    Hacko Elite
    la session n'est pas chez le client, j'utilise session_start() ....


    pour la vérifivation des sessions, comme j'utilise des pseudo frames, j'ai mis la verif de sessions dans l'index, au dessus de tout. cela me permet même de pouvoir afficher 'bonjour XXX', et de souhaiter un bon anniversaire si il y a lieu :D


    ce qui me fait surtout peur, ces des possibilités de failles en mettant des paramètres en plus dans l'adresse, ou en mettant des trucs foireux dans les posts.
    Hacko, 1 Juin 2003
    #5
  6. Offline
    PunkDeLuxe condom
    V lui foutre un code session assez sécurisé ...


    Code:
    
    /*page d'identifiaction */
    
    <body bgcolor=black text=orange>
    <br><br><br><br><br>
    <table bgcolor=orange width=250 cellpadding=1 cellspacing=1 align=center>
    <tr>
    <td>
    <form action="verif.php" method='post'>
    <table bgcolor=111111 width=100% align="center" cellpadding=0 cellspacing=0 border="0">
      <tr>
       <td>
       <br>
       </td>
      </tr>
      <tr>
       <td align=center>Login :</td>
      </tr>
      <tr>
       <td align=center><input type="text" name="login" maxlength="250"></td>
      </tr>
      <tr>
       <td align=center>Password</td>
      </tr>
      <tr>
       <td align=center><input type="password"name="pass" maxlength="10"></td>
      </tr>
      <tr>
       <td align="center"><br><input type="submit" value="log in"><br><br></td>
      </form>
      </tr>
    </table>
    
    </td>
    </tr>
    </table>
    </body>
    

    Code:
    
    /*verif.php*/
    <?
    
    $db = mysql_connect('localhost', 'root', '');
    mysql_select_db ('teamrd', $db);
    $sql = 'SELECT login, pass FROM rd_login';
    $req = mysql_query($sql) or die ('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    
    if($login=='' || $pass=='')
        {
        echo '<center><p>Vous avez oublié de remplir un champs.</p></center>';
        include('login.php'); 
        exit;
        }
    
    $sql = "select pass from rd_login where login='$login'";
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    
    $data = mysql_fetch_array($req);
    
    if($data['pass'] != $pass)
        {
        echo '<center><p>Mauvais login / password. Merci de recommencer</p></center>';
        include('login.php'); 
        exit;
        }
    else
        {
        session_start();
        session_register('login');
    
        include ('administration.php');
        
        
        }
    ?>
    

    Code:
    /* exemple de page sécurisée */
    
    <?
    session_start();
    
    if(!session_is_registered('login'))
        {
        echo 'Vous n\'êtes pas autoriser a acceder a cette zone';
        include('login.php');
        exit;
        }
    ?>
    
    
    <html>
    <form method="POST" action="addcalendarverif.php">
    <center>
    <input type="text" name="date" size="20" value="AAAA-MM-JJ" maxlength="35"><br>
    <input type="text" name="heure" size="20" value="hh" maxlength="70"><br>
    <input type="text" name="adversaire" size="20" value="adv" maxlength="70"><br>
    <input type="text" name="lineup" size="20" value="line up" maxlength="70"><br>
    <input type="submit" value="Envoyer" name="envoyer">
    </center>
    </form>
    <br><br><br>
    </html>
    

    Ha oui je vien de remarquer une fautes, ds le deuxieme code je fai un appel a login.php, ben c index.php ki revient
    PunkDeLuxe, 1 Juin 2003
    #6
  7. Offline
    PunkDeLuxe condom

    Il me semblai k une session une fois le browser internet éteint, n'était plus valide ... tu associe donc avec un cookies ? ou achake fois le membres dois ce connecter ?

    Pour le trucs foireux ds les posts fo faire un scripts qui interdit les commande java et compgnie, meme html ... masi alors tu dois mettre come sur ce forum, du bbcode ...
    PunkDeLuxe, 1 Juin 2003
    #7
  8. Offline
    SUEd Touriste
    ya aussi htmlentities() et htmlspecialchars() (chui po certain pour la deuxième) pour convertir les symboles utilisé dans l'html (comme le < et le >).


    Pour la sécurité :
    - tu te bases sur des sessions (pas des sessions PHP, mais des sessions que tu gères toi meme)
    - stockage des sessions (ID unique de session + ID unique d'utilisateur + IP de l'utilisateur + date de création + durée de validité de la session) dans table MySQL (il faut prévoir le cas des utilisateurs anonymes avec un ID spécifique et que l'on ne peut reconnaitre que par leur IP)
    - stockage ID session dans cookie sur ordi de l'utilisateur

    Remarque sur l'ID de la session :
    - pour un utilisateur enregistré, calcule l'ID de la session en fonction de la date, de l'heure et de l'ID de l'utilisateur
    - pour un utilisateur anonyme, calcule l'ID de la session en fonction de la date, de l'heure, et d'une représentation numérique de l'IP de l'utilisateur (par exemple md5($ip);)

    Il me semble qu'il y a la fonction uniqid() qui calcule un nombre unique en fonction de la date et de l'heure. Sinon, tu peux aussi insérer la fonction rand() à un endroit ou à un autre, afin de rendre l'ID encore + unique :p

    cela te permet d'utiliser l'auto-login et si tu développes le système, d'utiliser des préférences, pour les utilisateurs.
    En effet, si tu trouves une cookie avec un ID session valable (à checker dans la table), tu récupères l'ID de l'utilisateur et tu peux charger ses préférences de la table des users. :)

    Bon, c'est un peu du ptit chinois, mais n'hésite po à dire ske tu captes pas :p c'est pas réellement compliké à mettre en oeuvre, mais il faut bien réfléchir, c'est tout :)
    SUEd, 1 Juin 2003
    #8
  9. Offline
    Hacko Elite
    j'avais essayé de gérer les sessions moi même, mais j'avais eu un problème, je me suis énervé et j'ai repris les sessions du php :oops:


    sinon, merci de tout vos conseil, je vais plancher la dessus.


    si vous avez encore des conseil, n'hésitez pas...
    Hacko, 1 Juin 2003
    #9
  10. Offline
    RedCross ex membre
    Faut toujours penser au plus simple et plus évident aussi :
    genre mettre toutes les pages admins de phpbb et autres dans des repertoires protégés. Effacer du serveur toutes les pages "install.php" ou autre qui sont des portes d'entrée.

    enfin, ce genre de petites choses auxquelles on ne pense pas systématiquement ... ;)
    RedCross, 1 Juin 2003
    #10
  11. Offline
    Hacko Elite
    j'ai pas de pages admin.php, le site que je modifie, c'est moi qui l'avais fais au départ, mais j'y rajoute un forum et autre ..
    Hacko, 1 Juin 2003
    #11
  12. Offline
    k o D Belge !
    k o D, 1 Juin 2003
    #12
  13. Offline
    Hacko Elite
    Hacko, 1 Juin 2003
    #13
  14. Offline
    niafron ex membre
    sur le tuto de nexen il y a tout un chapitre sur la secu (pas mal fait du tout je trouve bien kil ne donnt pas des methodes toutes faites mais surtout des idees)
    niafron, 3 Juin 2003
    #14
  15. Offline
    kokotchY Elite
    tu serais surpris... j'ai déjà trouvé plein de scripts ou c pas sécurisé a toute les pages...
    kokotchY, 3 Juin 2003
    #15
  16. Offline
    Hacko Elite
    quand j'aurais fini le site programmation, pas graphisme, c'est pas mois qui le fais, je donnerais l'adresse pour defouler vos talents de hackers.

    Et celui qui arivera à trouver une faille aura un remerciement sur le site pour les tests.
    Hacko, 3 Juin 2003
    #16
Statut de la discussion:
Fermée.