J'ai un formulaire d'authentification devant moi, je voudrais savoir si y avait une quelconque faille dessus
Voici le code :
Code : Tout sélectionner
<?php
session_start();
// Récupération des données
$login = (isset($_POST["login"])) ? $_POST["login"] : "";
$pass = (isset($_POST["pass"])) ? $_POST["pass"] : "";
$autologin = (isset($_POST["autologin"])) ? 1 : 0;
$login_cookie = (isset($_COOKIE["login"])) ? $_COOKIE["login"] : "";
$pass_cookie = (isset($_COOKIE["pass"])) ? $_COOKIE["pass"] : "";
// Si des données ont été postées on les traite
if (!empty($login) && !empty($pass))
{
// Sécurise le login fourni, que magic_quotes_gpc soit sur on ou off
if( !get_magic_quotes_gpc() )
{
$login = addslashes($login);
}
require_once("./db.php");
$db = mysql_connect($serveur, $user, $password) or die('Erreur de connexion');
mysql_select_db($basename,$db) or die('Base inexistante');
/* On construit et on exécute la requête SQL qui regarde si le login demandé
existe, et si tel est le cas rappatrie le password associé */
$sql = "SELECT password FROM tadmin WHERE pseudo='".$login."'";
$req = mysql_query($sql) or die($sql."<br />".mysql_error());
// Si le login n'existe pas dans la base, on envoie sur une page d'erreur
if (mysql_num_rows($req) == 0)
{
header("Location: ./erreur_login.htm");
mysql_close();
return;
}
else
{
$rep = mysql_fetch_array($req, MYSQL_ASSOC);
}
// Sinon on compare le pass fourni avec celui de la base
if (md5($pass) != $rep["password"])
{
// Si le pass est mauvais, on redirige vers une page d'erreur
header("Location: ./erreur_pass.htm");
mysql_close();
return;
}
else
{
/* Si tout est bon, on autorise l'accès en forgeant éventuellement un cookie
afin de permettre la connexion automatique si l'utilisateur l'a demandé */
if ($autologin == 1)
{
$login = urlencode($login);
$pass = md5($pass);
setcookie("login", $login, time()+60*60*24*30);
setcookie("pass", $pass, time()+60*60*24*30);
}
$_SESSION["membre"] = 1;
header("Location: ./membres/index.php");
return;
}
mysql_close();
}
elseif (!empty($login_cookie) && !empty($pass_cookie))
// Sinon on regarde si les cookies d'authentification sont présents
{
// Sécurise le login fourni, que magic_quotes_gpc soit sur on ou off
if( !get_magic_quotes_gpc() )
{
$login = addslashes($login_cookie);
}
else
{
$login = $login_cookie;
}
/* On décode le cookie correspondant au login (pas besoin pour le pass qui est en md5) */
$login = urldecode($login);
$pass = $pass_cookie;
require_once("./db.php");
$db = mysql_connect($serveur, $user, $password) or die('Erreur de connexion');
mysql_select_db($basename,$db) or die('Base inexistante');
/* On construit et on exécute la requête SQL qui regarde si le login demandé
existe, et si tel est le cas rappatrie le password associé */
$sql = "SELECT password FROM tadmin WHERE pseudo='".$login."'";
$req = mysql_query($sql) or die($sql."<br />".mysql_error());
// Si le login n'existe pas dans la base, on envoie sur une page d'erreur
if (mysql_num_rows($req) == 0)
{
header("Location: ./erreur_login.htm");
mysql_close();
return;
}
else
{
$rep = mysql_fetch_array($req, MYSQL_ASSOC);
}
// Sinon on compare le pass fourni avec celui de la base
if ($pass != $rep["password"])
{
// Si le pass est mauvais, on redirige vers une page d'erreur
header("Location: ./erreur_pass.htm");
mysql_close();
return;
}
else
{
// Si tout est bon, on autorise l'accès
$_SESSION["membre"] = 1;
header("Location: ./membres/index.php");
return;
}
mysql_close();
}
else
// Sinon on affiche le formulaire d'authentification
{
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Authentification</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function verif_form() {
if (document.forms.identification.login.value == '') {
alert("Veuillez rentrer votre login.");
return(false);
} else if (document.forms.identification.pass.value == '') {
alert("Veuillez rentrer votre mot de passe.");
return(false);
} else {
return(true);
}
}
</script>
<noscript>
<meta http-equiv="Refresh" content="0; URL=http://mysite.com/noscript.htm"; ?>"/>
</noscript>
</head>
<body bgcolor="#3377FF">
<div align="left" style="position:absolute ">
<a href="http://www.newbiecontest.org"><img src="logo.png" border="" /></a>
</div>
<br />
<br />
<br />
<br />
<table width="75%" cellpadding="4" cellspacing="1" border="1" align="center">
<tr>
<td class="row1"><table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr>
<td colspan="2" align="center">
<br />
<div align='center'>
<b><font face="Verdana" size="3" color="#770000"><u>Accès à l'espace membre</u></font></b>
<br />
<br />
<br />
<form name="identification" action="index.php" method="post" onSubmit="return verif_form()">
Login<br />
<input type="text" name="login" size="16"><br /><br />
Mot de passe<br />
<input type="text" name="pass" size="16"><br /><br />
Connexion automatique <input name="autologin" type="checkbox" value="1"><br /><br /><br />
<input type="submit" value="Connexion">
</form>
</div>
<br />
</td>
</tr>
</td>
</tr>
</table>
</body>
</html>
<?php
}
?>
Merci d'avance