Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2655 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Mes sessions, question de sécurité...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mes sessions, question de sécurité...

n°1059686
gnarky
Sac à puces
Posté le 25-04-2005 à 13:46:19  profilanswer
 

Voila, je débute en php (ca vous cadre deja, non ?).
J'essaye de monter un site simple, et je commence par préparer l'architecture avant d'aller plus loin. J'entend par la une page d'administration d'ou l'on pourra poster des articles via formulaire... J'en suis a la mise en place de l'accès administration:
 
1- Stockage du login/pass d'administration dans une table sql
2- Récuperation du login/pass via formulaire
3- Comparaison avec ceux de la bdd, si ok...
4- Création d'une session, et redirection vers la page d'admin...
 
Bon je suis pas trop au point au niveau des sessions (et comment elles sont gérées par défaut sur free). Voici le début de mon code, bien sur l'est crado, mais j'arrete pas de retoucher de partout...
 
Veriflogin.php (=réception du formulaire et création de la session)

Code :
  1. <?php
  2. include("config.php" );
  3. $Touvabien = false
  4. if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) )
  5. {
  6.   extract($_POST);
  7.   $sql = "SELECT pseudo, mdp FROM blog_admin WHERE pseudo = '".addslashes($login)."'";
  8.   $req = mysql_query($sql) or die('Erreur SQL');
  9.   if (mysql_num_rows($req) > 0)
  10.   {
  11.   $info = mysql_fetch_assoc($req);
  12.      if ($password == $info['mdp'])
  13.  {
  14.      $Touvabien = true;
  15.      }
  16.   }
  17. }
  18. // Mise en session après validation
  19. if ($Touvabien) {
  20.     session_start();
  21.     $_SESSION['login'] = $login;
  22. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  23. echo '<p>Vous etes en mode admin !!';
  24. echo '<a href="admin.php>Panneau d\'administration</a>';
  25.  
  26. }
  27. else {
  28.  
  29.    echo '<p>Vous avez oublié de remplir un champ.</p>';
  30.    include('index.php');
  31.    exit;
  32. }
  33. ?>


 
 
admin.php (=page d'administration "sécurisée" )

Code :
  1. <?php
  2. session_start();
  3. if(!isset($_SESSION['login']) && (!isset($_SESSION['ip']))) {
  4.   echo 'Vous n\'êtes pas autoriser à acceder à cette zone';
  5.   include('index.php');
  6.   exit;
  7. }
  8. else
  9. {
  10. echo "Welcome aboard!";
  11. }
  12. ?>


 
 
Alors ? C'est sécurisé ? Bof ?

mood
Publicité
Posté le 25-04-2005 à 13:46:19  profilanswer
 

n°1059692
KangOl
Profil : pointeur
Posté le 25-04-2005 à 13:52:16  profilanswer
 

non mais je me demande comment un fonction comme extract peux exister...
c'est encore plus dangereux que le register_globals a on [:mlc]


---------------
Nos estans firs di nosse pitite patreye...
n°1059701
gnarky
Sac à puces
Posté le 25-04-2005 à 13:57:44  profilanswer
 

ah...
c'est dangereux en cas d'intrusion de caractères/codes dangereux dans le formulaire j'imagine ?  
Je devrais utiliser quelle méthode dans ce cas -_-

n°1059707
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 25-04-2005 à 14:04:14  profilanswer
 

j'ai jamais compris pourquoi on faisait allusion aux register_global à ON à chaque fois qu'on parle de securité. qqn peut faire un court aparté dessus pour je capte le truc svp, je debute aussi?

n°1059709
KangOl
Profil : pointeur
Posté le 25-04-2005 à 14:05:40  profilanswer
 

non c'est dangereux car ca permet a quelqu'un de mal intentioné d'ecraser des variables... (ici, il pourrait ecraser la valeur de $Touvabien)
 
autant directement utiliser le tableau $_POST


---------------
Nos estans firs di nosse pitite patreye...
n°1059731
gnarky
Sac à puces
Posté le 25-04-2005 à 14:18:41  profilanswer
 

Pourrais tu developper tes deux idées ? :p
J'aimerais comprendre comment techniquement il est possible d'écraser (comme tu dis) la variable...
 
En fait je n'arriverait pas a voir quoi faire tant que je comprendrait pas comment il est possible d'outrepasser la sécurité (j'imagine qu'il y a plusieurs facons, si vous pouviez les décrire).

n°1059790
cerel
Posté le 25-04-2005 à 14:41:17  profilanswer
 

Comme l'a dit KangOf, il suffit d'envoyer un "Toutvabien=true" en post a ta page pour etre logue ...
 
exemple :

Code :
  1. <form method="post" action="veriflogin.php">
  2. <input type="hidden" name="Toutvabien" value="true" />
  3. <input type="text" name="login" value="foo" />
  4. <input type="text" name="password" value="bar" />
  5. <input type="submit" name="Submit" value="ok" />
  6. </form>


 
Et puis bon, stocker en clair les mots de passe dans la base, je trouve pas ca tres secure ...


Message édité par cerel le 25-04-2005 à 14:44:37
n°1059798
gnarky
Sac à puces
Posté le 25-04-2005 à 14:43:10  profilanswer
 

je vois
mais, d'une comment qqun pourrait il connaitre l'existance d'une variable touvabien ??!
Pour le mdp, j'me suis dis la meme chose, mais faut bien stocker le mdp qquepart non ?

n°1059803
cerel
Posté le 25-04-2005 à 14:45:46  profilanswer
 

gnarky a écrit :

je vois
mais, d'une comment qqun pourrait il connaitre l'existance d'une variable touvabien ??!
Pour le mdp, j'me suis dis la meme chose, mais faut bien stocker le mdp qquepart non ?


 
Ton mot de passe tu le stocke en crypte dans ta base.
Une fois que l'user veut se loguer, tu cryptes le password qu'il t'envoie. Si les deux versions cryptees sont les memes, alors les password initaux etaient les memes.
 
Voila, pas besoin de password en clair dans ta base.

n°1059809
gnarky
Sac à puces
Posté le 25-04-2005 à 14:49:40  profilanswer
 

le cryptage md5 est conseillé ? ou y a mieux ?

mood
Publicité
Posté le 25-04-2005 à 14:49:40  profilanswer
 

n°1059870
gnarky
Sac à puces
Posté le 25-04-2005 à 15:13:08  profilanswer
 

Pour revenir à l'intrusion de la variable Toutvabien (true) en post... Je suis allé voir le manuel, pour la fonction extract(), j'ai reperé des options:

Citation :


EXTR_SKIP
    Lors d'une collision, ne pas réécrire la variable existante.


 
Si je fais  

Code :
  1. extract($_POST, EXTR_SKIP);


 
La variable $Toutvabien déterminé juste avant l'extraction ne sera pas modifiée... J'ai juste ? C'est ptet en carton ca non ?

n°1059884
FlorentG
Unité de Masse
Posté le 25-04-2005 à 15:16:11  profilanswer
 

Laisse tomber, c'est absolument pas bien [:spamafote]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Mes sessions, question de sécurité...

 

Sujets relatifs
Question de C++ et d'unix pour expertmini question ! Est ce que ceci est correct?
Variables partagées entre sessions[Perl] Question toute bête?
Petite question VBShtaccess+image+php = danger sécurité?
[VBA] Question simple sur InStr et adresse e-mail...petite question sur les THREAD
Question sur upload de fichierBonjour, juste une question !
Plus de sujets relatifs à : Mes sessions, question de sécurité...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR