Peut-être que je n'ai pas encore assez de compréhension de cela, alors je cherche un peu de direction.Problème de sécurité/injection SQL avec collation mysql?
Tous nos tableaux montrent une collation de latin1_swedish_ci. Voici ce que je vois dans les variables de mysql:
collation connection utf8_general_ci
(Global value) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci
Maintenant, nous voyons UTF8 (ou, au moins, contenu langue étrangère) stockés dans la db assez souvent, et il rend correctement. Est-ce que la collation n'a pas d'importance pour ça?
Utiliser quelque chose comme php addslashes() sur l'entrée de l'utilisateur - est-ce suffisant? Ou est-ce que cela laisse une opportunité d'injection?
EDIT: Alors, en regardant l'ensemble des paramètres collation/charset, au moins dans phpmyadmin, je vois:
character set client utf8
(Global value) latin1
character set connection utf8
(Global value) latin1
character set database latin1
character set filesystem binary
character set results utf8
(Global value) latin1
character set server latin1
character set system utf8
character sets dir /usr/share/mysql/charsets/
collation connection utf8_general_ci
(Global value) latin1_swedish_ci
collation database latin1_swedish_ci
collation server latin1_swedish_ci
ces paramètres ne signifie rien. ils sont tous remplacés. ce sont juste des valeurs par défaut. Vérifiez les tableaux particuliers charset. La requête SHOW CREATE TABLE peut l'afficher –
L'exécution de "show create table" sur nos différentes tables montre le jeu de caractères par défaut = latin1. Du côté php, nous définissons le type de contenu en sortie sur utf-8. Donc, il peut y avoir une discordance ici, mais les choses s'affichent correctement. . . – Neil