Table vidée de ma base de données mysql
Posté : 25 janv. 2015, 22:35
Bonjour à tous,
mon site internet à été hacké deux fois en quelques mois.
Plusieurs tables de ma base de données ont été vidée. Je pense qu'il s'agit d'injection mysql mais je n'en suis pas sûr.
Comment le savoir ?
Et comment y remédier ?
Voici par exemple mon code de connexion utilisateur présent sur toutes les pages :
Est-ce que cette requête a une faille ?
mon site internet à été hacké deux fois en quelques mois.
Plusieurs tables de ma base de données ont été vidée. Je pense qu'il s'agit d'injection mysql mais je n'en suis pas sûr.
Comment le savoir ?
Et comment y remédier ?
Voici par exemple mon code de connexion utilisateur présent sur toutes les pages :
if (isset($_POST['valide'])) // si clique sur le bouton ok
{
if(empty($_SESSION["mail"])) // si l'utilisateur n'est pas connecté
{
if(isset($_POST["mail"])) {$mail = $_POST['mail'];} else { $mail = "";}
if(isset($_POST["mdp"])) {$mdp = $_POST['mdp'];} else { $mdp = "";}
}
if(empty($erreur[0]))
{
include ('connect.php');
/* on va d abord chercher si le client n'existe pas en effectuant un test sur la boîte mail */
$sql = sprintf("select * from flatforswap_adherent where mail=%s and mdp=%s and valide !=%s", quote_smart($mail), quote_smart($mdp), quote_smart('0'));
$req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
if (mysql_num_rows($req) == 1)
{
$data = mysql_fetch_assoc($req);
$valide = $data['valide'];
if ($valide == 2){
$verifexist = true;}
elseif($valide == 1){
$verifexist = false;
$erreurc[] = '<center><font color="#FF0000">'.$idem_txt0032.'</font></center>';}
}
else
{
$verifexist = false;
$erreurc[] = '<center><font color="#FF0000">'.$idem_txt0033.'</font></center>';
}
mysql_close();
if ($verifexist == 'true')
{
$_SESSION['mail'] = $data['mail']; /* l'adhérent est maintenant connecté */
include ('connect.php');
// $sqld = sprintf("SELECT id_adh FROM flatforswap_adherent WHERE mail=%s", quote_smart($_SESSION["mail"]));
// 20/04/2012 on rajoute la clause WHERE $valide = 2
$sqld = sprintf("SELECT id_adh FROM flatforswap_adherent WHERE mail=%s and valide =%s", quote_smart($_SESSION["mail"]), quote_smart('2'));
$reqd = mysql_query($sqld) or die('Erreur SQL : <br />'.$sqld);
$datad = mysql_fetch_assoc($reqd);
$id_adh = $datad['id_adh'];
$_SESSION['id_adh'] = $id_adh; /* on met id_adh en session afin d'éviter des requête inutiles */
}
}
// message d'erreur
//if(isset($erreurc[0])) {for($i=0;$i<sizeof($erreurc);$i++) { echo $erreurc[$i];}}
}
Est-ce que cette requête a une faille ?