Bonjour à tous,
Je suis mis à mal par un robot hacker qui arrive à effacer certains champs de ma table malgré des précautions prises mais visiblement inefficaces.
L'exemple concret:
Lorsque l'on veut mettre à jour les données d'un article, il faut encoder une référence (ex: $newid) dans un champ de formulaire et le script affiche ensuite les infos détaillées cet article.
Mais là ou la faille se situe c'est lorsque l'article est préenregistré mais n'a pas encore reçu de référence.
Dans ce cas le robot arrive à lister les données qui ne contiennent pas encore de référence et à updater les champs en les remplissant par des données vides.
Ce que je ne comprend pas, c'est que si je teste la méthode et que je laisse le code barre vide et que je valide, j'ai bien une erreur bloquante pour la suite.
Qu'en pensez-vous ?
Voici le formulaire en question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 <?php session_start(); ?> <html> <head> </head> <body> <?php include("data.php"); include("connexion.php"); $time = date("Y-m-d "); $time2 = date("U"); // On commence par récupérer les champs if(isset($_POST['nom'])) $nom= mysql_real_escape_string ($_POST['nom']); else $nom=""; if(isset($_POST['description'])) $description=mysql_real_escape_string ($_POST['description']); else $description=""; if(isset($_POST['dimension'])) $dimension=mysql_real_escape_string ($_POST['dimension']); else $dimension=""; if(isset($_POST['poids'])) $poids=mysql_real_escape_string ($_POST['poids']); else $poids=""; if(isset($_POST['newid'])) $newid=mysql_real_escape_string ($_POST['newid']); else $newid=""; i if (get_magic_quotes_gpc()) { $nom=stripslashes($nom); $description=stripslashes($description); $dimension=stripslashes($dimension); $poids=stripslashes($poids); $newid=stripslashes($newid); } $sql="SELECT newid FROM gghf_table WHERE newid= '$newid'"; $result=mysql_query($sql); $count=mysql_num_rows($result); $data = mysql_fetch_assoc($result); if($count !=1){ echo 'Erreur, veuillez svp contacter le responsable'; } else { $_SESSION['id'] = $newid; echo '<SCRIPT LANGUAGE="JavaScript"> document.location.href="modifadd.php" </SCRIPT>'; } ?> </body> </html>
Partager