Securité Pseudo Password

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Securité Pseudo Password

par papa-ko » 30 août 2007, 18:24

Merci de ton intervention,
En fait je reste sur ma page. le formulaire se réinitialise et c'est tout.
Je vais faire le test avec le $loginFoundUser, mais je place cette fonction où exactement? et comment vérifier la variable $loginFormAction ?
Mes question sont peut être idiote mais je débute en php et je galère. d'autant plus que j'e suis un bouquoin qui est très mal fait :evil:

par Ryle » 30 août 2007, 12:02

Et concretement qu'est ce qui t'arrive ? tu es redirigé vers une autre page ? tu as une page blanche ? une page non trouvée ? tu restes sur le formulaire ? ...

Affiche la valeur de $loginFoundUser, ca devrait générer une erreur sur le header, mais ça te permettra déjà de savoir si tu rentres dans le if() ou dans le else et voir si le problème a lieu avant ou après.

Vérifies également que la variable $loginFormAction utilisé dans l'attribut action de ton formulaire te renvoi bien vers la page de traitement des données (qui semble être la même ?)

par papa-ko » 30 août 2007, 11:25

Bonjour
Je début aussi en php mais je dois en plus gérer une base de données (pas mal pour un début!!)
dans le site que je développe il y a une zone permettent de faire des achats via un connexion client.
Mon problème est tout bête mais il me pourrit la vie depuis 3 jours.
Lorsque mon client va se connecter il tape son pseudo et son mot de passe. Provisoirement il est envoyé vers une page de gestion de son profile (ca c'est pour vérifier si la connexion ce passe bien). En cas d'erreur il est redirigé vers un page spécifique.
Le problème vien du fait que lors de la requête je ne suis pas du tout envoyé vers les pages!
Je précise que je suis passé par la fonction "connecter l'utilisateur" et voici le code que dreame m'a générer :

Déclaration du formulaire

Code : Tout sélectionner

<form id="login" name="login" method="POST" action="<?php echo $loginFormAction; ?>"> <p>pseudo <input name="pseudo" type="text" id="pseudo" /> </p> <p>mot de passe <input name="mdp" type="password" id="mdp" /> </p> <p align="center"> <input type="submit" name="Submit2" value="connexion" /> </p> </form> </tr>
le code de controle utilisateur
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevtUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['pseudo'])) {
  $loginUsername=$_POST['pseudo'];
  $password=$_POST['mdp'];
  $MM_fldUserAuthorization = "";
  $MM_redirectLoginSuccess = "tableau_de_bord.php";
  $MM_redirectLoginFailed = "rejet.html";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_BtPrestige, $BtPrestige);
  
  $LoginRS__query=sprintf("SELECT pseudo, pass FROM shp_client WHERE pseudo='%s' AND pass='%s'",
    get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password)); 
   
  $LoginRS = mysql_query($LoginRS__query, $BtPrestige) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
     $loginStrGroup = "";
    
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
je vous remercie pour votre aide

par ouckileou » 19 avr. 2006, 13:26

Donc en résumé, exemple pour MD5

via PHP :
<?php
$mdp = 'toto';
$mdpCrypte = md5($mdp);
$req = "INSERT INTO table (login, mdp) VALUES ('titi', '".$mdpCrypte."'";
?>
via MySQL :
$req = "INSERT INTO table (login, mdp) VALUES ('titi', MD5('".$mdp."')";

par nabs » 19 avr. 2006, 11:55

impeccable !!!
ca c un bon tuyau que tu me donnes ! la j'ai compri comment s'utilise la md5() car j'avais pas vu que c'est une fonction de php.
merci pour les renseignements.

par ouckileou » 19 avr. 2006, 11:46

Cryptées ou pas ça ne change rien, tu as un juste à insérer les données avec un banal INSERT

Tu peux utiliser les fonctions PHP qui t'ont été données, ou leur équivalent MySQL (ou autre sgbd)

par nabs » 19 avr. 2006, 11:40

tkt l'effort a été fait, sinon le sujet ne serait pas remonté. d'ailleur je cherche comment crypter des données sur une bdd selon le md5 ou le sha1, mais si je redemande ici c pour avoir ne serai ce qu'un lien vers un tuto (autre que celui proposé déja car peu d'infos dessus) qui explik bien comment inserer ces données cryptées.
merci !!!

par ouckileou » 19 avr. 2006, 11:27

une autre question, comment crypter un mdp sur une bdd ?
Quand on remonte un sujet, on fait l'effort de lire les réponses qui ont été données avant
Quelqu'un a déjà répondu à cette question dans ce sujet

par nabs » 19 avr. 2006, 11:17

donc il faudrai utiliser le meme cryptage pour les 2 mdp de sorte a ce que la valeur corresponde c ca ?
une autre question, comment crypter un mdp sur une bdd ?

par Ryle » 19 avr. 2006, 11:12

Euh... ben non... ce sont les deux qui sont cryptés :)

Lors de l'insertion en base, tu cryptes le mot de passe qui a été renseigné pour que celui-ci ne soit pas lisible (comme les gens ont tendance à mettre le même mot de passe partout, ca empêche de le trouver si quelqu'un met la main sur ta base, où si tu délègues la gestion à d'autres personnes :))

Il ne peuvent ainsi pas se faire passer pour un autre en utilisant son mot de passe puisqu'il ne peuvent ni le lire, ni le décrypter.

Et lors de la connexion, tu as juste à crypter celui utilisé pour aller comparer la valeur obtenue à celle que tu as dans ta base. Si elles correspondent, c'est qu'il s'agit bien du même mot de passe :)

par nabs » 19 avr. 2006, 10:48

dans ce cas le mdp n'est pas crypté dans la bdd, mais c uniquement le mdp saisi qui est crypté.
Tu peux utiliser un hachage avec md5() ou sha1()
Attention cependant, le hachage est irréversible, ça veut dire qu'in internaute qui a perdu son mot de passe ne pourra pas le récupérer parce qu'on ne peut pas faire l'opération inverse.
c quoi ce hachage qui empeche de récuperer le mdp sur la base ? et pourquoi crypter un mdp dans la base ?

par Ryle » 19 avr. 2006, 10:42

ce que je comprend dans ca c'est que le mot de passe est crypté dans la base meme, donc illisible, et donc pas moyen de faire de tests dessus. mais je suis sure ke j'ai compri le truc de travers, donc j'aimerai bien y voir un peu plus clair svp.
Il te suffit simplement de crypter le mot de passe saisie par l'utilisateur et de vérifier que le résultat est le même que celui que tu as en base :)

par nabs » 19 avr. 2006, 10:33

slt a tous,
je remet ce sujet a jour car j'y travaille en ce moment, et j'ai une question cocernant ce cryptage de mdp sur la bdd, comment peut on faire de controles d'autentifications si le mdp est crypté sur la bdd ? ce que je comprend dans ca c'est que le mot de passe est crypté dans la base meme, donc illisible, et donc pas moyen de faire de tests dessus. mais je suis sure ke j'ai compri le truc de travers, donc j'aimerai bien y voir un peu plus clair svp.

par Cyrano » 16 juin 2005, 00:39

Tu peux utiliser un hachage avec md5() ou sha1()
Attention cependant, le hachage est irréversible, ça veut dire qu'in internaute qui a perdu son mot de passe ne pourra pas le récupérer parce qu'on ne peut pas faire l'opération inverse.

par sadced13 » 16 juin 2005, 00:33

Re ...
crypter les mots de passe stockés dans la base de données.
Comment crypte t'on les mots de passes dans la base de donnés ?