[Résolu] Connexion (Espace Membre)

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 : [Résolu] Connexion (Espace Membre)

Re: [En Cours] Connexion (Espace Membre)

par Asicoo » 29 mai 2012, 08:02

Hum :x Il est impossible c'est pour un serveur et je ne peux changer j'ai déjà essayer il prend que le Mysql5. Je vais ajouté un autre champ à la table et faire qu'elle soit copié et hash en sha1 >< Vraiment pas pratique ><

Re: [En Cours] Connexion (Espace Membre)

par Xartrick » 29 mai 2012, 07:44

Change la manière de haché les mots de passes, cela peut être une infinité d'algorithme différent.

Re: [En Cours] Connexion (Espace Membre)

par Asicoo » 28 mai 2012, 22:05

<?php

// On appelle Mysql.php.

require_once('./Config/Mysql.php');

// On se connecte à Mysql grâce à l'apelle.

    $Mysql = mysql_connect($Ip, $Utilisateur, $MotDePasse);
    mysql_select_db($DBAccount, $Mysql);
	
// On prépare les données

    $sLogin    = mysql_real_escape_string($_POST['login']);
    $sPassword = mysql_real_escape_string($_POST['pass']);
   
    $sQuery = "SELECT * FROM `account` WHERE `login` = '" . $sLogin . "' AND PASSWORD(`password`) = '" . $sPassword . "' LIMIT 1;";
    $oQuery = mysql_query($sQuery) or die('Erreur SQL !<br>'.$Mysql.'<br>'.mysql_error());
   
    if (mysql_num_rows($oQuery) == 1) {
		
		session_start();
                 $_SESSION['login'] = $sLogin;
echo 'OK';
    }
    else {
		
echo 'NON';

}
mysql_close();
?>
Ce petit bout de code fonctionne très bien avec seulement Login, or comme tu me la démontré avec MYSQL5 sa ne fonctionne pas :x
Je te remercie encore pour le temps que tu m’attribue

Re: [En Cours] Connexion (Espace Membre)

par Xartrick » 28 mai 2012, 21:48

La requête devient alors:
$sQuery = "SELECT * FROM `account` WHERE `login` = '" . $sLogin . "' AND PASSWORD(`password`) = '" . $sPassword . "' LIMIT 1;";
MySQL :: MySQL 5.0 Reference Manual :: 12.12 Encryption and Compression Functions

Re: [En Cours] Connexion (Espace Membre)

par Asicoo » 28 mai 2012, 21:38

Merci à tous j'ai juste un problème, je suis même pas sur que sa soit du md5 :x
Avec le login seulement sa fonctionne, mais avec le mdp sa fonctionne plus j'en conclu que le hashage est mauvais.

En effet; pour un serveur, je dois prendre la valleur MYSQL5 pour les mot de passe.
se qui peut nous donner :
3dfbb4353e9a6bcad936a8a8897ab355131279c3

http://www.insidepro.com/hashes.php?lang=eng
si sa peut vous aider, je ne sais mettre comme Hash :x

Re: [En Cours] Connexion (Espace Membre)

par Xartrick » 28 mai 2012, 21:02

Le mieux est de faire une requête qui cherche à la fois le nom d'utilisateur et le mot de passe correspondant, ainsi, il suffira de compter le nombre de colonne renvoyé à la place de les traités.
Seul bémol, il sera impossible de s'avoir si l'utilisateur existe, ou si le mot de passe est incorrect.

Cela donnerait quelque-chose comme ça:
<?php
    $sLogin    = mysql_real_escape_string($_POST['login']);
    $sPassword = mysql_real_escape_string($_POST['password']);
    
    $sQuery = "SELECT * FROM `account` WHERE `login` = '" . $sLogin . "' AND `password` = '" . $sPassword . "' LIMIT 1;";
    $oQuery = mysql_query($sQuery) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    
    if (mysql_num_rows($oQuery) == 1) {
        // OK, ce compte existe et le mot de passe est correct.
    }
    else {
        // Oups, ce compte n'existe pas ou le mot de passe est incorrect.
    }
?>

Re: [En Cours] Connexion (Espace Membre)

par Invité » 28 mai 2012, 18:05

re:

Evite la fonction extract source de problèmes...

donc tu assignes les valeurs postadata

Code : Tout sélectionner

$login = $_POST['login']; $password = $_POST['password'];
a voir: htmentities,strip_tags, caractères autorisés ,trim pour filtrer et nettoyer
+ mysql_real_escape_string
apres tu peux juste reassigner:

Code : Tout sélectionner

$password = md5($password);
+

Re: [En Cours] Connexion (Espace Membre)

par Asicoo » 28 mai 2012, 15:55

Je suis vraiment un débutant sniff.
La page d'inscription j'ai eu aucun soucis mais l'espace de connexion est bien plus complexe j'ai l'impression.

md5($password) = $data['password'];

Je dois le mettre ou ? Quand je le met sa me retourne une erreur :x.
Can't use function return value in write context in

D'ailleurs il y a longtemps j'avais déjà crée un espace membre j'avais carrément crée un petit hebergement web etc...
Mais depuis que j'avais oublié une faille ! avec le ftp depuis j'ai plus touché au php ;x.

Donc ou placer md5($password) = $data['password'];
Merci encore pour votre aide et désolé pour le dérangement.

Re: [En Cours] Connexion (Espace Membre)

par Invité » 28 mai 2012, 14:37

hehe j ai pensé à ca au depart mais bon ...

il faudrait que tu verifies quand même les bonnes valeurs :D donc

Code : Tout sélectionner

md5($password) = $data['password'];
sinon as tu essayé de soumettre pour tes champs ?
login : ' OR 'X'='X
password: cequetuveux

Pour mysq_real_escape_string, c' est pour que tu vois tes problème d'echappement et de securité dans ton script!
+

Re: [En Cours] Connexion (Espace Membre)

par Asicoo » 28 mai 2012, 14:26

Merci, mais comme les mot de passe sont hash, en md5, sa fonctionne pareille ?

Re: [En Cours] Connexion (Espace Membre)

par Invité » 28 mai 2012, 14:11

[Résolu] Connexion (Espace Membre)

par Asicoo » 28 mai 2012, 11:40

Bonjour,

J'ai un petit problème, dans 3 cas, Il me dit si c'est vide (normal) si les mdp et login sont (mauvais) mais quand ils sont bon sa m'affiche l'erreur mdp ou login incorrecte :x.

Voici Connexion.php
<?php 
include('Ouverall.php');
include('Motd.php');
include('Menu_Gauche.php');
?>
<div id="right"><div class="bloc2"><div class="tng">... Connexion ...</div><div class="texte">
<br><center>
<form action="Connexion_Valide.php" method='post'>


<b>Nom du Compte <span style="color:red"><strong>*</strong></span></b><br>
<INPUT type="text" name="login"><br><br>
<b>Mot de passe <span style="color:red"><strong>*</strong></span></b><br>
<INPUT type="password" name="password"><br><br>


<td colspan="2" align="center"><input type="submit" value="Connexion"></td>
</form> 		
</center>


</div></div></div><div class="clear"></div>
<?php
include('Footer.php');
?>

Et voilà Connexion_Valide
<?php 
include('Ouverall.php');
include('Motd.php');
include('Menu_Gauche.php');
?>
<div id="right"><div class="bloc2"><div class="tng">... Connexion ...</div><div class="texte">

<?php
require_once('./Config/Mysql.php');

    mysql_connect($Ip, $Utilisateur, $MotDePasse);
    mysql_select_db($DBAccount);

if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['password'])) {
  extract($_POST);
  $sql = "select password,login from account where login='".$login."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  $data = mysql_fetch_assoc($req);
  if($data['password'] != $password) {
                echo '<br><div align="center"><span style="color:red"><strong>Une erreur est surevenue.<br />Votre nom d\'utilisateur ou votre mot de passe est incorrecte.<br>Redirection dans 3 secondes.</strong></span></div>';
    header('Refresh: 3; Connexion.php');
  }
  else {
    session_start();
    $_SESSION['login'] = $login;
                echo '<br><div align="center"><span style="color:green"><strong>Vous êtes à présent connecté.<br>Redirection dans 3 secondes.</strong></span></div>';
	    header('Refresh: 3; Account.php');
  }   
}
else {
                echo '<br><div align="center"><span style="color:red"><strong>Une erreur est surevenue.<br />Des informations sont manquantes.<br>Redirection dans 3 secondes.</strong></span></div>';
    header('Refresh: 3; Connexion.php');
}
mysql_close();
?>

</div>
</div></div><div class="clear"></div>
<?php
include('Footer.php');
?>

Merci encore d'avoir lu, Merci de votre future aide.

J'ajoute, que dans mysql, la base est account et la table est aussi account, et que login est représente par login et mot de passe par password