Salut all,
Je me pose la question si l'utilisation de requete prepare empeche/parre toutes injections SQL ?
(par prepare j'entends $mysqli->prepare ou mysqli_prepare)
Merci pour vos infos.
Salut all,
Je me pose la question si l'utilisation de requete prepare empeche/parre toutes injections SQL ?
(par prepare j'entends $mysqli->prepare ou mysqli_prepare)
Merci pour vos infos.
Ce n'est pas la fonction prepare() en elle même qui empêche les injections, c'est le fait de ne pas mettre les données potentiellement dangereuse dans la requête mais de les passer en paramètre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part mysqli_prepare('SELECT colonne FROM table WHERE colonne = ' . $_POST['id']); // pas bien
Merci sabotage pour ta reponse, mais je parlais dans des conditions correctes d'utilisation
(genre l'exemple http://php.net/manual/fr/mysqli.prepare.php)
Donc si on fait comme l'exemple, ca empeche les injections ?
Avec Mysql, il vaut mieux aussi desactiver l'emulation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
Bonjour,
il serait bon de lire la doc :
Si j'ai tout compris (lol)
Pas glop, car utilisation du $_POST['id'] directement dans le prepare.
Code : Sélectionner tout - Visualiser dans une fenêtre à part mysqli_prepare('SELECT colonne FROM table WHERE colonne = ' . $_POST['id']);
Glop, car le $_POST['id'] est en dehors de la cmd sql.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 mysqli_prepare('SELECT colonne FROM table WHERE colonne = ?'); $con->bind_param('i', $_POST['id']);
D'accord, c'est affirmatif :
Mais pas très explicite pour autant.. Si votre application utilise exclusivement les requêtes préparées, vous pouvez être sûr qu'aucune injection SQL n'est possibl
Réceptionnons une variable pirate $_GET['cadeau']="DELETE 'everything' FROM 'la_totale' ".
Pourquoi le fait d'utiliser une requête préparée neutralise-t'il la valeur piégée de la variable $_GET['cadeau'] ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $stmt = $dbh->prepare ("INSERT INTO REGISTRY (cadeau) VALUES (:cadeau, :value)"); $stmt->bindParam(':cadeau', $_GET['cadeau']);
Je ne me représente pas le truc.
Essaye, pour voir...![]()
Partager