PHP - Sécurisation du contenu d'un formulaire
Martin
-
Pitet Messages postés 2845 Statut Membre -
Pitet Messages postés 2845 Statut Membre -
Bonjour,
Je suis en train de développer un petit site en php mais j'ai remarqué un petit soucis : si je met des côtes simples l'insertion dans la base de donné ne se fait pas.
Par exemple :
ou dans ce cas le champ jeu ne contient que le "L" et l'ajout ne se fait même pas a cause du "arche perdue"
Je suis en train de développer un petit site en php mais j'ai remarqué un petit soucis : si je met des côtes simples l'insertion dans la base de donné ne se fait pas.
$bdh->exec("INSERT INTO jeux_video(possesseur,jeu) VALUES('$possesseur','$jeu')");
Par exemple :
$bdh->exec("INSERT INTO jeux_video(possesseur,jeu) VALUES('Martin','L'arche perdue')");
ou dans ce cas le champ jeu ne contient que le "L" et l'ajout ne se fait même pas a cause du "arche perdue"
A voir également:
- PHP - Sécurisation du contenu d'un formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook compte désactivé - Guide
- Word a trouvé du contenu illisible - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
2 réponses
Bonjour,
Non, ce n'est pas bon du tout....
A la limite.. il peut echapper son apostrophe ( avec un BackSlash).... (via l'instruction PHP addslashes )
mais vu qu'il semble utiliser la PDO... il est préférable d'utiliser les instructions PREPARE
Non, ce n'est pas bon du tout....
A la limite.. il peut echapper son apostrophe ( avec un BackSlash).... (via l'instruction PHP addslashes )
mais vu qu'il semble utiliser la PDO... il est préférable d'utiliser les instructions PREPARE
$sql = "INSERT INTO jeux_video(possesseur,jeu) VALUES(:possesseur,:jeu)";
$a_data = array(":possesseur"=>$possesseur,":jeu"=>$jeu);
$prepare = $bdh->prepare($sql);
$prepare->execute($a_data);
Les bonnes pratiques recommandent d'utiliser les fonctions spécialement dédiées pour éviter les injections sql tel que les requêtes préparées, PDO::quote() ou mysqli_real_escape_string() selon l'API utilisée ce qui permet de s'affranchir du type de SGBD utilisé et donc de faciliter le développement et la maintenance des accès bdd.
Plus d'info : https://www.php.net/manual/fr/security.database.sql-injection.php#security.database.avoiding