par
Ryle » 21 avr. 2016, 16:01
J'aurais tendance à dire qu'il faut faire pour l'update comme tu fais pour l'insert
Actuellement, tu utilises la valeur envoyée par l'utilisateur sans aucun contrôle. Si le titre est " L'apostrophe ", ta requête devient :
UPDATE aer_news SET titre='L'Apostrophe'
ce qui engendre une erreur sql
La directive magic_quotes lorsqu'elle est active sur le serveur ajoute automatiquement un antislash devant les apostrophes et guillemets des variables reçues en get, post ou cookie. Si elle n'est pas active, il faut protéger tes chaines avec un addslashes() par exemple ou mieux encore mysql_real_escape_string() ou PDO::quote() pour les enregistrements en base.
UPDATE aer_news SET titre='L\'Apostrophe'
Mais le besoin n'est pas seulement de protéger les apostrophes, il faut aussi contrôler les variables reçues pour éviter les injections SQL qui pourraient permettre à un hacker d'utiliser ton script pour exécuter ses propres requêtes sur ta base de données. Avec PDO tu peux aussi utiliser les requêtes préparées, bien qu'elles ne suffisent pas à elles seules à garantir une protection complète, elles découragent les amateurs
(Pour autant, une requête préparée qu'on exécute qu'une seule fois, ça perd beaucoup de son intérêt à mon sens

)
J'aurais tendance à dire qu'il faut faire pour l'update comme tu fais pour l'insert ;)
Actuellement, tu utilises la valeur envoyée par l'utilisateur sans aucun contrôle. Si le titre est " L'apostrophe ", ta requête devient :
[sql]UPDATE aer_news SET titre='L'Apostrophe'[/sql]ce qui engendre une erreur sql :)
La directive magic_quotes lorsqu'elle est active sur le serveur ajoute automatiquement un antislash devant les apostrophes et guillemets des variables reçues en get, post ou cookie. Si elle n'est pas active, il faut protéger tes chaines avec un addslashes() par exemple ou mieux encore mysql_real_escape_string() ou PDO::quote() pour les enregistrements en base.
[sql]UPDATE aer_news SET titre='L\'Apostrophe'[/sql]
Mais le besoin n'est pas seulement de protéger les apostrophes, il faut aussi contrôler les variables reçues pour éviter les injections SQL qui pourraient permettre à un hacker d'utiliser ton script pour exécuter ses propres requêtes sur ta base de données. Avec PDO tu peux aussi utiliser les requêtes préparées, bien qu'elles ne suffisent pas à elles seules à garantir une protection complète, elles découragent les amateurs :)
(Pour autant, une requête préparée qu'on exécute qu'une seule fois, ça perd beaucoup de son intérêt à mon sens :))