Pb connexion à un espace sécurisé

Fermé
Ptitepalou - 28 févr. 2013 à 17:02
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 28 févr. 2013 à 19:08
Bonjour à tous,

Sur mon site il y a une rubrique espace sécurisé, qui permet à des personnes de se connecter et d'envoyer des fichiers.
Jusque là tout fonctionnait bien, mais aujourd'hui une personne ne peut plus se connecter à son compte, un message d'erreur apparaissant : "Veuillez verifier vos identifiants et mots de passe."
J'ai alors vérifié dans la base mysql les id et mdp à entrer pour ce compte et pour se connecter ; en utilisant ces données la connexion ne fonctionne toujours pas



page de connexion :

Code :

<?php require_once("remove_by_date.php");

$error = $_GET['error'];
$project_name = $_GET['project_name'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Interface de partage de fichiers</title>

<link href="css/meyer.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />

</head>

<body>
<div id="header">
<img src="logo.png" width="200" alt="logo Fenwick" title="Accueil">
</div>

<div id="content">
<?php IF (! empty($error)){
//selon les valeurs de erreur
IF ($error == 1) {echo '<p class="alerte">Veuillez verifier vos identifiants et mots de passe.</p>';}
else IF ($error == 2) {echo '<p class="alerte">Veuillez vous identifier.</p>';}
}
?>
<form action="login.php" method="post">
<table>
<tr><td colspan="2"><h1>Bienvenue sur l'espace securisé</h1></td></tr>
<tr><td colspan="2">Veuillez saisir votre login et votre mot de passe.</td></tr>
<tr><td>Login :</td><td><input name="project_name" id="project_name" type="text" size="20" /></td></tr>
<tr><td>Mot de passe :</td><td><input name="pass" id="pass" type="password" size="20" /></td></tr>
<tr><td colspan="2" align="center"><input name="submit" type="submit" value="OK" /></td></tr>
</table>

</form>

<?php
require_once("footer.php");
?>




page login :

Code :

<?php
include ("connexion/connexion.php");


//reception des VARIABLES
$id_user = $_POST['id_user'];
$project_name = $_POST['project_name'];
$pass = $_POST['pass'];



$query ="SELECT *
FROM 'user'
WHERE project_name = '$project_name'
AND pass = '".md5($pass)."' ";

$result = mysql_query($query);

$nb = mysql_num_rows($result);

//test
IF($nb==1){
//reussite -> redirection
// recup des reponses
$line=mysql_fetch_array($result);

//cr�ation de la session
session_start();
$_SESSION['project_name']= 'ok';
$_SESSION['id']= $line['id_user'];
$_SESSION['droit']= $line['droit'];

header("location: accueil.php");
}else{
//echec -> ecriture du log et reirection
header("location: index.php?error=1&project_name=$project_name");
}

?>




Je ne sais pas d'où peut venir le problème, j'entre bien le "project_name" puis le pass, il n'y a a priori pas de problèmes de code, alors peut-être manque-t-il quelque chose ?
A voir également:

3 réponses

arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
28 févr. 2013 à 17:07

//reception des VARIABLES
$id_user = $_POST['id_user'];
$project_name = $_POST['project_name'];
$pass = $_POST['pass'];



$query ="SELECT *
FROM 'user'
WHERE project_name = '$project_name'
AND pass = '".md5($pass)."' "; 


Tout ceci me laisse penser à une attaque par injection SQL pour bientôt :-)

Si le mot de passe a été changé ou piraté, il faut simplement le changer dans la table des utilisateurs:

UPDATE tabledesutilisateurs SET colonneDuPassword WHERE user = 'nomDuUser';

Je te conseille quand même de regarder cette histoire d'injection SQL avant que cela arrive, surtout su le site est public.
0
Bonjour,

Merci pour ta réponse rapide.

Une attaque par injection SQL ?? oO


Super, j'ai pu modifier le mot de passe et la connexion fonctionne à nouveau. Je suis dessus depuis plusieurs heures, j'ai essayé maintes solutions et je ne trouvais pas comment modifier ce mot de passe oO (mes requetes sql ne fonctionnaient pas, la tienne non plus d'ailleurs :/ : j'ai été dans Afficher/modifier (crayon) )

Tout simplement, merci !

Si tu as le temps peux-tu m'expliquer cette attaque par injection ?? le mot fait peur ... (au passage, je n'ai jamais modifié le mot de passe et personne n'a pu le faire, et quand je remets l'ancien mot de passe la connexion ne passe pas ! bizarre)
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
Modifié par arth le 28/02/2013 à 19:09
Effectivement la requête n'était pas bonne, my mistake :-)

UPDATE tabledesutilisateurs SET colonneDuPassword=md5('nouveauMotDePasse') WHERE user = 'nomDuUser';   


Concernant l'injection SQL, et à moins que la requête soit protégée dans le code de la page connexion.php, ici une petite explication très pratique :

https://fr.wikipedia.org/wiki/Injection_SQL

Dans ton cas en gros imaginons comme l'ndique le Wiki que je mette comme projet dans le champ prévu à cet effet: test' --

Ce qui veut dire que je pourrais me logguer puisque la requête se transformera alors en :

$query ="SELECT * 
FROM 'user' 
WHERE project_name = 'test' -- ' AND pass = '".md5($pass)."' ";  


Sachant que tout ce qui est après les "--" sera considéré comme commentaire.

Comme ta vérification se porte sur le nombre de lignes retournées, qui sera égal à 1, alors n'importe qui pourrait utiliser un identifiant valide et pourrait se connecter sous cet identifiant sans avoir besoin de mot de passe. Ce qui inclut également un potentiel login admin.




Le loup, solitaire et mystérieux.
0