JeuWeb - Crée ton jeu par navigateur
injections SQL : caractères utilisés, ôter moi un doute - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : injections SQL : caractères utilisés, ôter moi un doute (/showthread.php?tid=204)

Pages : 1 2 3


RE: injections SQL : caractères utilisés, ôter moi un doute - Sephi-Chan - 12-01-2011

Ok, tu crées 2 versions de tes variables.

Je me moque pas mal des performances (tu sais, quand on utilise un framework, on en perd), mais je trouve ça inutilement compliqué par rapport à l'utilisation d'un ORM, qui va échapper les données qu'on lui a donné dans son coin quand il va générer la requête SQL.


Sephi-Chan


RE: injections SQL : caractères utilisés, ôter moi un doute - php_addict - 25-01-2011

bonsoir

je reviens sur ce sujet pour une dernière question:

au sujet d'un objet serialisé avec la function serialize() en php :

est ce que cet objet sérialisé doit etre échappé contre les injections mysql ? (avec mysql_real_escape_string ou mieux avec une requête préparée)

j'ai bien cherché sur le net mais sans réel succès...

a+

PS la question est valable aussi pour un objet JSON bien que je ne stocke pas d'objet JSON dans ma base de donnée


RE: injections SQL : caractères utilisés, ôter moi un doute - Holy - 25-01-2011

Ce que tu rentres dans ton champ SQL est une chaîne au final, donc oui tu dois protéger avec mysql_escape ou via les requêtes préparées.


RE: injections SQL : caractères utilisés, ôter moi un doute - php_addict - 29-01-2011

bon bein voilà c'est fait, ouf...

je ne bidouille plus mes variables POST et GET en les passant dans une moulinette d'encodage contre les injections sql, toutes mes variables sont saines et non modifiées.

du coup j'ai été obligée de vérifier toutes les requêtes une à une et de les préparer (PDO). Dans le doute j'ai quasiment préparée toutes mes requêtes sauf quelques unes qui utilise las seule clause WHERE IN ($liste) . les paramètres de $liste sont échappés si c'est une string et laissés tel quel si c'est un numeric (une fonction toute bête se carge du boulot) et dans le doute j'ai préparé les requêtes qui n'en avait pas vraiement besoin, :$....

tout ca pour donner un conseil aux débutants amateurs tels que moi:

ne modifier pas les variables issues de l'utilisateur (POST, GET, etc..) dès la récupération de celles ci mais uniquement lors de l'utilisation dans une requête SQL, le top étant d'utiliser les requêtes préparées.

dans beaucoup trop de tuto php on peut trouver ceci:


$param= htmlentities($_POST['param'], ENT_QUOTES);

c'est une ânerie de modifier le $_POST dès la récupération de celui ci, laisser le tranquille Wink ne l'échapper comme vous voudrez uniquement lors d'une utilisation dans une requête SQL !

PS: j'ai quand même mis une semaine à vérifier toutes mes requêtes et tout mes POST et GET , la honte...