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

  FORUM HardWare.fr
  Programmation
  PHP

  [Avi]Le site des frites, représentation de ma belge attitude

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Avi]Le site des frites, représentation de ma belge attitude

n°1340932
Phpuck
Php powaaa
Posté le 06-04-2006 à 19:58:09  profilanswer
 

Peut être ce sujet n'est pas dans la bonne catégorie, si c'est le cas j'en suis navré mais je le poste dans cette partie car voici 1 moi que je me casse le c*l sur la programmation php de ce site mais tout va bien j'aime faire ça ;) .
 
Le lien ??? http://nbsclan.free.fr/cmfrites
Inscription requise !
 
Dites moi ce que vous en pensez,  
merci bien ;) !

mood
Publicité
Posté le 06-04-2006 à 19:58:09  profilanswer
 

n°1340934
Kyfun
Les choses se passent !
Posté le 06-04-2006 à 20:04:14  profilanswer
 

Super sans m'inscrire j'arrive a me loggué :D
Casses toi encore un peu le cul sur le php parceque la c'est une passoire ? :)

n°1340941
Phpuck
Php powaaa
Posté le 06-04-2006 à 20:21:36  profilanswer
 

Fiou j'avais rien vu :D ! Voila j'ai modifié la "petite" erreur.

n°1340944
Kyfun
Les choses se passent !
Posté le 06-04-2006 à 20:24:37  profilanswer
 

Toujours pareil chez moi :D
 
edit: franchement revois bien ton code, j'ai pu me loguer sous ton pseudo et modifier tes info perso, avec seulement un peu de jugeote :)
 
Bon si tu trouves pas d'ici demain jte dirais comment éviter tout ça parceque la ça craint :)
 
Sinon le concept a l'air sympa ;)


Message édité par Kyfun le 06-04-2006 à 20:28:25
n°1340945
Phpuck
Php powaaa
Posté le 06-04-2006 à 20:25:12  profilanswer
 

Explique !?  
 
Edit : Arff rien à dire t'es puissant ;).
Ca doit être un prob avec le md5 ou un truc dans le genre mais bon là je creuse enfin jvais trouver.  
Stp tu peux ne pas trop 'foutre la merde' sur le site pendant que l'erreur n'est pas réparée ?? Merci
 
Edit(2) : C'est bon j'ai trouvé comment me protégé, merci beaucoup;) .


Message édité par Phpuck le 06-04-2006 à 20:35:19
n°1340948
Kyfun
Les choses se passent !
Posté le 06-04-2006 à 20:29:17  profilanswer
 

Test et corrige s'il le faut, TOUTES INFORMATIONS rentrées dans un formulaire :)
Avec une injection sql toute simple j'ai réussi a me logguer avec ton pseudo et modifier tes infos :)
 
edit: quoique meme sans injection sql, en mettant n'importe quel mot de passe, on peut ce loguer :x
 
edit2: bon pour les trucs de base, revois bien toutes tes requetes, met un maximum de caracteres pour chaque champs de ton formulaire (pour eviter de mettre des requetes a l'interieur par exemple :), 12 caractere pour un pseudo est un passe c'est générallement suffisant), ensuite a la reception des info rentrées dans le formulaire:
-tu utilises une fois ta donnée récup du addStripSlashes() + htmlspecialchars() il me semble, ça évite pas mal de bordel. Enfin j'espere que tu ne stocks aucun password en clair dans t'as bdd. Enregistre les en md5 au moins (bien que ça ne soit plus très fiable), et ensuite pour tes requetes tu compares le md5 de ta BDD et le md5 passé dans le formulaire (et traité avec addSlash... etc :) )


Message édité par Kyfun le 06-04-2006 à 20:36:30
n°1340962
benamoubea​ch
tivuplai
Posté le 06-04-2006 à 20:38:01  profilanswer
 

je dirais pas mieux que InTheWindd, j'ai pu également me connecter rapidement à ton compte, lechokapik :p

n°1340968
Phpuck
Php powaaa
Posté le 06-04-2006 à 20:55:35  profilanswer
 

J'ai sécurisé en interdisant quelques caractères ou chaine de caractères, mais c'est surement toujours vulnérable.

n°1340971
Joel F
Real men use unique_ptr
Posté le 06-04-2006 à 21:01:40  profilanswer
 

Toujours pas mieux ....

n°1340982
benamoubea​ch
tivuplai
Posté le 06-04-2006 à 21:17:40  profilanswer
 

regarde du coté de mysql_real_escape_string et htmlentities

mood
Publicité
Posté le 06-04-2006 à 21:17:40  profilanswer
 

n°1341086
Ricco
Retour au pays
Posté le 07-04-2006 à 00:09:17  profilanswer
 

J'ai peur de la requete qui se cache derrière, on peut se connecter avec des comptes qui existe pas :D Le site aime pas du tout par contre ...


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
n°1341163
rufo
Pas me confondre avec Lycos!
Posté le 07-04-2006 à 09:03:59  profilanswer
 

Avec root/root, j'ai réussi à me conncecter, c'est normal? Mais après, j'arrive sur des pages sans graphiques, toutes moches.
 
Rem : "Bienvenue sur l'insistant de modification de donnée." -> ça serait pas plutôt "assistant de modification"? :D

n°1341207
cinocks
Posté le 07-04-2006 à 10:06:01  profilanswer
 

Phpuck a écrit :

J'ai sécurisé en interdisant quelques caractères ou chaine de caractères, mais c'est surement toujours vulnérable.


Tu as un message qui t'attends ;)


---------------
MZP est de retour
n°1341244
Phpuck
Php powaaa
Posté le 07-04-2006 à 10:43:51  profilanswer
 

Bon jviens de sécuriser mais un peu trop on dirait  :pt1cable: , plus personne n'arrive à se connecter  :??:  .
 
Mon code :  
 
    $id = htmlentities($_POST["id"]);
    $passe = htmlentities($_POST["motdepasse"]);
 
 
$requette = mysql_query("SELECT COUNT(*) AS nbr_ent FROM table WHERE id='$id'" );
$resultats = mysql_fetch_array($requette);
 
$reponses = mysql_query("SELECT COUNT(*) AS nbr_entre FROM table WHERE id='".$id."' AND motdepasse='".md5($passe)."'" );
$donne = mysql_fetch_array($reponses);
 
if ($resultats['nbr_ent'] == "0" ){
$_SESSION["membre"] = FALSE;
echo '<font face="verdana">Mauvais Login</font>';
   
}elseif ($id == "" OR $passe == "" ){
$_SESSION["membre"] = FALSE;
echo '<font face="verdana">Vous devez entrer une donnée</font>';
 
}elseif($donne['nbr_entre'] == "0" ){
$_SESSION["membre"] = FALSE;
echo '<font face="verdana" color="orange">Mauvais Pass/Login</font>';
 
}elseif (preg_match("!\/\/|\;|\'\"|shutdown with nowait|master..xp!i", $id )){
$_SESSION["membre"] = FALSE;
echo '<font face="verdana">Des caractères inscrits ne sont pas accepté</font>';
 
}elseif (preg_match("!\/\/|\;|\'\"|shutdown with nowait|master..xp|\(!i", $passe )){
$_SESSION["membre"] = FALSE;
echo '<font face="verdana">Des caractères inscrits ne sont pas accepté</font>';
 
}else{
 
 
Et il m'affiche tout le temps :
Mauvais Pass/Login
 
Edit : Après quelques testes, l'erreur viendrait de la comparaison entre les md5 :S


Message édité par Phpuck le 07-04-2006 à 10:51:43
n°1341326
cinocks
Posté le 07-04-2006 à 11:56:45  profilanswer
 

Mon dieu. Il va falloir tout revoir. :ouch:
 
utilises les strip_tags, mysql_real_escape_string et tutos pour securiser.
 
qu'est-ce que c'est que c'est preg_match?
 
Pour les requetes, une seule va suffire.  
 
SELECT 1 FROM table WHERE id="' . $tonidtraité . ' AND motdepasse=md5("' . $tonpwdtraité . '" )
 
Si la requete retourne un enregistrement, c'est qu'un membre existe pour les données. Bien sur, verifie les variables en entrée.


---------------
MZP est de retour
n°1341501
Phpuck
Php powaaa
Posté le 07-04-2006 à 15:00:04  profilanswer
 

Bon j'ai utilisé une autre technique :
 
Code :
 
<?php
 
if (!isset($_SESSION['membre'])) $_SESSION['membre'] = false;
 
 
 
if ($_POST['id'] != "" AND $_POST['motdepasse'] != "" )
{
 
   $id = htmlentities(addslashes($_POST['id']));
   $passe = htmlentities(addslashes($_POST['motdepasse']));
   
   
   
   mysql_connect("", "", "" );
   mysql_select_db("" );
 
 
   $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM table WHERE id='".$id."'" );
   
   if (mysql_result($sql,0,'nb_pseudo') != 0)
   {
      $sql_info = mysql_query("SELECT * FROM table WHERE id='".$id."'" );
      $donnees_info = mysql_fetch_array($sql_info);
 
   
      if ($donnees_info['motdepasse'] == md5($passe))
      {
         
 
            $_SESSION['membre'] = true;
            $_SESSION['membreid'] = $donnees_info['id'];
 etc
 
 
Le problème vient toujours de la comparaison entre les hashage md5 !
Pouvez vous m'aider ??? Merci


Message édité par Phpuck le 07-04-2006 à 15:00:29
n°1341586
Phpuck
Php powaaa
Posté le 07-04-2006 à 16:14:06  profilanswer
 

Up, désolé j'ai vraiment besoin de reponses et de solutions ;) . Merci bien
 
Edit : Serait il possible que la cause vienne du fait que j'ai hasher deux fois le mot de passe (mais je suis pas sur de ça) ??


Message édité par Phpuck le 07-04-2006 à 16:18:16
n°1341597
cinocks
Posté le 07-04-2006 à 16:21:57  profilanswer
 

il te faut comparer un hash avec un autre. Les mots de passe dans la base doivent etre hashés.
 


---------------
MZP est de retour
n°1341734
Phpuck
Php powaaa
Posté le 07-04-2006 à 18:50:14  profilanswer
 

Je sais mais ca foirre :( .
J'ai vraiment besoin d'aide en urgence ce serais sympas merci .

n°1341738
Djebel1
Nul professionnel
Posté le 07-04-2006 à 18:55:56  profilanswer
 

deja htmlentities, c'est pour proteger l'affichage, pas pour proteger l'acces à la base. Il faut utiliser mysql_real_escape_string pour faire ça.
ensuite, comme ça t'as déjà été inidiqué, tu n'as besoin que d'une requete :  
SELECT COUNT(*) AS nb_pseudo FROM table WHERE  
id='".mysql_real_escape_string($id)."' and motdepasse = "'.mysql_real_escape_string(md5($passe)).'"'
au moment ou tu fais cette requete, $passe ne doit pas être encrypté, et le mot de passe dans la base doit l'etre naturellement.


Message édité par Djebel1 le 07-04-2006 à 18:57:00
n°1341746
cinocks
Posté le 07-04-2006 à 19:19:25  profilanswer
 

Et le count(*) est remplacable par un SELECT 1, le user etant forcement unique. ;)

n°1341749
Phpuck
Php powaaa
Posté le 07-04-2006 à 19:29:18  profilanswer
 

Bon alors, le problème c'est sur maintenant vient de la comparaison des mot de passe en md5 pourtant je ne comprends pas ou est l'erreur :(.

n°1341750
Djebel1
Nul professionnel
Posté le 07-04-2006 à 19:32:24  profilanswer
 

tu as afficher ta requete pour la débugger ? ça donne quoi ? la table dans la base contient quoi pour cet utilisateur ? Tu as fait ce qu'on t'a dit ?


Message édité par Djebel1 le 07-04-2006 à 19:32:57
n°1341752
Phpuck
Php powaaa
Posté le 07-04-2006 à 19:41:33  profilanswer
 

Bon alors mon code pour l'instant :
 
if (!isset($_SESSION['membre'])) $_SESSION['membre'] = false;
 
 
 
if ($_POST['id'] != "" AND $_POST['motdepasse'] != "" )
{
 
   $id = $_POST['id'];
   $passe = $_POST['motdepasse'];
   
   
   
   mysql_connect("", "", "" );
   mysql_select_db("" );
 
 
$requette = "SELECT 1 FROM table WHERE id='".mysql_real_escape_string($id)."' AND motdepasse = '".mysql_real_escape_string(md5($passe))."'";
$resultat = mysql_query($requette);  
 
   if ($donnees_info = @mysql_fetch_array($result))
   {
 
             $_SESSION['membre'] = true;
            $_SESSION['membreid'] = $donnees_info['id'];
 
[etc]
 
 
Donc ça affiche toujours :
Votre login ou mot de passe est invalide (invisible dans la partie code que je vous ai donné)
 
Pour la base de donnée les mot de passe sont crypté un md5 heu voila je croix que c'est tout j'ai fais ce que vous m'avez dit ;) .

n°1341754
cinocks
Posté le 07-04-2006 à 19:45:41  profilanswer
 

mais il n'existe pas ton champ id dans le retour. A quoi il correspond? Le pseudo? Ou l'identifiant interne du membre?

n°1341755
Djebel1
Nul professionnel
Posté le 07-04-2006 à 19:54:32  profilanswer
 

tu as fais un 'echo $requette;' ?
on s'en fout de savoir ce que ça affiche. On veut savoir ce que donne la requete, ce que contient l'enregistrement dans la base pour cet utilisateur ;)
 
tu as essayé d'afficher $requette et de la balancer directement dans la base (avec phpmyadmin par exemple) ?

n°1341757
Ricco
Retour au pays
Posté le 07-04-2006 à 20:05:30  profilanswer
 

C'est mysql_real_escape_string(md5($passe)) ou md5(mysql_real_escape_string($passe)) plutôt ?
 
Et le md5() ne joue-t-il pas au finale le même rôle que mysql_real_escape_string() ?


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
n°1341762
Phpuck
Php powaaa
Posté le 07-04-2006 à 20:14:18  profilanswer
 

Bizare de plus en plus bizare, j'ai affiché donc la requette et j'ai pris le mot de passe qu'il affichait et j'ai comparé avec mon mot de passe que j'ai hashé en md5 enfin c'est coufus je sais, mais disons que j'ai simplement affiché mon code hashé dans un echo et mis une variable ou je hashe mon mot de passe (pas encore hashé) et j'affiche la variable et ça ne donne pas la même chose


Message édité par Phpuck le 07-04-2006 à 20:16:53
n°1341787
Kyfun
Les choses se passent !
Posté le 07-04-2006 à 21:29:44  profilanswer
 

Tien voila un exemple assez vieux que j'avais fait pour un site, je codais pas encore comme aujourd'hui mais bon si ça peu t'aider...
C'est une fonction d'authentification, y'avais par session, cookie et par formulaire.
 

Code :
  1. function auth()
  2. {
  3. $tempo = false;
  4. if (isset($_SESSION['login']) && isset($_SESSION['pwd']))
  5. {
  6.  $tempo = true;
  7. }
  8. else
  9. {
  10.  if (isset($_COOKIE['ox_login']) && isset($_COOKIE['ox_pwd']))
  11.  {
  12.   $login = $_COOKIE['lr_login'];
  13.   $pwd   = md5($_COOKIE['lr_pwd']);
  14.   $_SESSION['id_membre']   = $result['id'];
  15.   include("../cfg_nfo/config_infos.php" );
  16.   $req    = "SELECT * FROM membres WHERE login='$login' AND pwd='$pwd'";
  17.   $result = mysql_fetch_array(mysql_query($req));
  18.   if ($result)
  19.   {
  20.     $_SESSION['login'] = $login;
  21.    $_SESSION['pwd']   = $pwd;
  22.    $_SESSION['id_membre']   = $result['id'];
  23.    $tempo             = true;
  24.   }
  25.   mysql_close();    
  26.  }
  27.  else
  28.  {
  29.   if (isset($_POST['login']) && isset($_POST['pwd']))
  30.   {
  31.    $login = addslashes($_POST['login']);
  32.    $pwd   = md5(addslashes($_POST['pwd']));
  33.    include("../cfg_nfo/config_infos.php" );
  34.    $req    = "SELECT * FROM membres WHERE login='$login' AND pwd='$pwd'";
  35.    $result = mysql_fetch_array(mysql_query($req));
  36.    if ($result)
  37.    {
  38.      $_SESSION['login'] = $login;
  39.     $_SESSION['pwd']   = $pwd;
  40.     $_SESSION['id_membre']   = $result['id'];
  41.     $tempo             = true;
  42.    }
  43.    mysql_close();       
  44.   }
  45.  }
  46. }
  47. return $tempo;
  48. }


 
Bon le fichier que j'ouvre défois c'est pour faire une connexion a ma base. Bon je prennais en compte que $result était true, c'est que j'avais un enregistrement donc que c'était bon (ce qui n'est pas judicieux)... Et enfin j'avais 2 fois le meme bout de code, j'aurai du faire une fonction en plus. Bref tu peux t'en inspirer si tu veux...
 
Bref c'est vieux est moche, mais bon ça marchais a l'époque :D, aujourd'hui j'aurai pas codé ça comme ça, mais bon inspire toi en...
 
ps: je connaissais pas elseif aussi :)
 
edit 2 : j'utilisais à cette epoque ce bout de code pour éviter les trucs pas beau rentré par l'utilisateur :D
Je sais plus ce que ça vaut mais bon... ça fait un bout de temps que j'ai pas refait de php...
 

Code :
  1. $jours = trim(htmlspecialchars(addslashes($_POST['jours'])));

Message cité 1 fois
Message édité par Kyfun le 07-04-2006 à 21:35:07
n°1341861
Phpuck
Php powaaa
Posté le 08-04-2006 à 00:15:37  profilanswer
 

Après une "petite" recherche j'ai trouvé l'erreur de hashage mais n'ai pas su le reglé.
 
Voici l'exemple d'un code codé
Le code tapé : ec3ac16a6c949d9dc8f67d9c9c037bff
Le code pris de la base : ec3ac16a6c949d9d
 
Donc avec les couleur on distingue bien la premiere partie du code qui est la même qu'en dessous (rouge) mais ensuite une série de caractère s'ajoute (bleu) et je ne vois pas bien d'ou ils viennent  :??:

n°1341944
Ricco
Retour au pays
Posté le 08-04-2006 à 09:31:11  profilanswer
 

Vérifie la taille du champs dans la base de données. Je pense qu'il doit être trop petit donc ça coupe la fin.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
n°1341955
Phpuck
Php powaaa
Posté le 08-04-2006 à 10:01:58  profilanswer
 

Exacte !
Merci pour toutes vos aides !

n°1341960
cinocks
Posté le 08-04-2006 à 10:14:51  profilanswer
 

Phpuck a écrit :

Après une "petite" recherche j'ai trouvé l'erreur de hashage mais n'ai pas su le reglé.
 
Voici l'exemple d'un code codé
Le code tapé : ec3ac16a6c949d9dc8f67d9c9c037bff
Le code pris de la base : ec3ac16a6c949d9d
 
Donc avec les couleur on distingue bien la premiere partie du code qui est la même qu'en dessous (rouge) mais ensuite une série de caractère s'ajoute (bleu) et je ne vois pas bien d'ou ils viennent  :??:


un md5 est codé sur 32 caracteres. Tu aurais pu lire la doc sur mysql avant de faire la modif.

n°1341961
cinocks
Posté le 08-04-2006 à 10:16:25  profilanswer
 

Kyfun a écrit :

Tien voila un exemple assez vieux que j'avais fait pour un site, je codais pas encore comme aujourd'hui mais bon si ça peu t'aider...
C'est une fonction d'authentification, y'avais par session, cookie et par formulaire.
 

Code :
  1. function auth()
  2. {
  3. $tempo = false;
  4. if (isset($_SESSION['login']) && isset($_SESSION['pwd']))
  5. {
  6.  $tempo = true;
  7. }
  8. else
  9. {
  10.  if (isset($_COOKIE['ox_login']) && isset($_COOKIE['ox_pwd']))
  11.  {
  12.   $login = $_COOKIE['lr_login'];
  13.   $pwd   = md5($_COOKIE['lr_pwd']);
  14.   $_SESSION['id_membre']   = $result['id'];
  15.   include("../cfg_nfo/config_infos.php" );
  16.   $req    = "SELECT * FROM membres WHERE login='$login' AND pwd='$pwd'";
  17.   $result = mysql_fetch_array(mysql_query($req));
  18.   if ($result)
  19.   {
  20.     $_SESSION['login'] = $login;
  21.    $_SESSION['pwd']   = $pwd;
  22.    $_SESSION['id_membre']   = $result['id'];
  23.    $tempo             = true;
  24.   }
  25.   mysql_close();    
  26.  }
  27.  else
  28.  {
  29.   if (isset($_POST['login']) && isset($_POST['pwd']))
  30.   {
  31.    $login = addslashes($_POST['login']);
  32.    $pwd   = md5(addslashes($_POST['pwd']));
  33.    include("../cfg_nfo/config_infos.php" );
  34.    $req    = "SELECT * FROM membres WHERE login='$login' AND pwd='$pwd'";
  35.    $result = mysql_fetch_array(mysql_query($req));
  36.    if ($result)
  37.    {
  38.      $_SESSION['login'] = $login;
  39.     $_SESSION['pwd']   = $pwd;
  40.     $_SESSION['id_membre']   = $result['id'];
  41.     $tempo             = true;
  42.    }
  43.    mysql_close();       
  44.   }
  45.  }
  46. }
  47. return $tempo;
  48. }


 
Bon le fichier que j'ouvre défois c'est pour faire une connexion a ma base. Bon je prennais en compte que $result était true, c'est que j'avais un enregistrement donc que c'était bon (ce qui n'est pas judicieux)... Et enfin j'avais 2 fois le meme bout de code, j'aurai du faire une fonction en plus. Bref tu peux t'en inspirer si tu veux...
 
Bref c'est vieux est moche, mais bon ça marchais a l'époque :D, aujourd'hui j'aurai pas codé ça comme ça, mais bon inspire toi en...
 
ps: je connaissais pas elseif aussi :)
 
edit 2 : j'utilisais à cette epoque ce bout de code pour éviter les trucs pas beau rentré par l'utilisateur :D
Je sais plus ce que ça vaut mais bon... ça fait un bout de temps que j'ai pas refait de php...
 

Code :
  1. $jours = trim(htmlspecialchars(addslashes($_POST['jours'])));



 
de gros defauts dans ton code comme le manque de blindage des variables en COOKIE, le mot de passe en clair dans le COOKIE.

n°1342016
Kyfun
Les choses se passent !
Posté le 08-04-2006 à 12:19:13  profilanswer
 

Toutafait d'accord :) C'est bien pour ca que j'ai dis que c'est vieux mais que ça peut l'inspirer :p

mood
Publicité
Posté le   profilanswer
 


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

  [Avi]Le site des frites, représentation de ma belge attitude

 

Sujets relatifs
récuperer un texte sur un siteScript permettant d'écouter radio sur son site perso
Comment ajouter du son à un site - pour l'avoir en continu ??Lier un forum et un site
Script permettant d'écouter radio sur son site perso[Recherche] Codeur PHP pour site
[avenir du web] Comment construire son site pour répondre au futur ?[RESOLU] Comment faire des liens vers les pages de son site?
Menu site internetMenu de site internet!!! important
Plus de sujets relatifs à : [Avi]Le site des frites, représentation de ma belge attitude


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