Nous permettons aux utilisateurs de rechercher une base de données à partir d'une seule entrée de texte et j'ai des difficultés à filtrer certaines chaînes fournies par l'utilisateur.Validation de l'entrée utilisateur ou
Par exemple, si l'utilisateur soumet:
��������� lcd SONY
(Notez que le 's?) Je dois annuler la recherche.
I comprennent la base64 version codée de la chaîne ci-dessus enroulé de façon à ce que sa course facile:
print(base64_decode("1MfLxc/RwdPHIGxjZCBTT05Z"));
J'ai ignoré ces entrées avant, mais maintenant (ne sais pas pourquoi) vient de réaliser la requête de base de données MySQL est en train de prendre presque éternellement à exécuter, c'est maintenant en haute priorité.
Un autre exemple pour souligner que nous utilisons utf-8 et mb_detect_encoding n'aide pas beaucoup:
print(base64_decode("zqDOm8+Fzr3PhM63z4HOuc6/IM+Bzr/Phc+HzyU="));
ΠΛυντηριο ρουχ�%
Alors:
- comment puis-je détecter/filtrer ces entrées?
- Comment cette entrée est-elle générée?
Rejeter ces entrées est une mauvaise chose à faire. Vous devez comprendre pourquoi ils affectent la performance en premier lieu. – SLaks
Ceci est la première ligne de défense. Je suis coincé en ce moment, donc je vais enquêter sur le problème de performance de la base de données jusqu'à ce que je reçois une idée brillante. – zaf
Êtes-vous en train de dire que l'utilisateur saisit manuellement le caractère de remplacement? http://www.fileformat.info/info/unicode/char/FFFD/index.htm –