Filtrer les caractères non imprimables des champs textes

Eléphant du PHP | 185 Messages

17 nov. 2008, 13:34

Bonjour,

J'ai une jolie classe Form (style Hoa ou Zend), et je pensais filtrer systématiquement tous les caractères non imprimables des champs textes (non password) et textarea.

Pensez-vous que ça soit une bonne idée ? Sachant que si le caractère est non imprimable, il ne s'affichera de toute façons pas... C'est dans un souci de sécurité, bien entendu.

Merci d'avance pour vos avis.

@+
Savageman.

ViPHP
ViPHP | 2287 Messages

17 nov. 2008, 13:37

Ca peut te réserver des surprises si tu n'as pas une gestion parfaite des charsets...
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 185 Messages

17 nov. 2008, 15:06

Mes charsets sont bien gérés à priori. C'est plus pour éviter par exemple que quelqu'un ai le même pseudo "affiché" s'il mets des caractères invisibles dedans.
De plus, il n'y a aucun intérêt de mettre des caractères non affichables dans ce type de champ...

ViPHP
ViPHP | 4674 Messages

17 nov. 2008, 19:04

Hey :),

Et quels sont les caractères non imprimables ? La plage de caractères est immense … Exemple : il suffit que tu n'aies pas installé les polices asiatiques pour Unicode, et tu ne verras pas les caractères (parfois). De plus, tu comprends vite que c'est très dépendant des configurations de la machine de l'utilisateur.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 185 Messages

17 nov. 2008, 21:32

Pour l'instant, j'ai ça : return preg_replace('`[^ \x20-\x7f\w]`i', '', $value);

En gros, je vire tout, sauf les caractères "espace", entre code ascii 32 et 127 et \w sert pour les accents suivant la configuration locale... Après c'est pas vraiment fait pour les caractères chinois non plus, c'est vrai. :s

ViPHP
ViPHP | 4674 Messages

18 nov. 2008, 02:38

Je suis peut-être naïf, mais en quoi ça ouvre des failles de sécurité ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 185 Messages

18 nov. 2008, 08:47

Des failles, des failles... C'est un grand mot. J'ai dit plus haut que c'était pour éviter les petits malins. Par exemple, je peux facilement m'inscrire avec le même pseudo que toi. Si je change l'avatar pour prendre aussi le même, des gens pourront penser que c'est toi qui poste (alors qu'en fait non). Bon sur PHPFrance c'est pas forcément vrai pour toi car t'as un espèce de gros logo VIPHP en-dessous, mais la plupart du temps c'est bon.
C'est pour éviter des petits malins quoi. ;)

ViPHP
ViPHP | 5924 Messages

18 nov. 2008, 18:31

Ce que tu décris, c'est une forme d'engeneering social, et c'est une attaque très efficace contre des gens non avertis…

Eléphant du PHP | 185 Messages

18 nov. 2008, 18:45

Sauf que personne n'est protégé... Ou presque personne...
Le truc, c'est que mon filtrage est très restrictif : les accents déjà, c'est mort. :/

ViPHP
ViPHP | 4674 Messages

18 nov. 2008, 19:36

J'y ai encore réfléchis aujourd'hui et je ne trouve pas de solutions car c'est très dépendant des configurations de chaque terminal. Si quelqu'un a une idée …

Sékil' a mis un nom sur le problème, peut-être qu'une petite recherche … ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

ViPHP
ViPHP | 5924 Messages

18 nov. 2008, 21:29

Sékil' a mis un nom sur le problème, peut-être qu'une petite recherche … ?
Non, j'y crois pas. L'engeneering social c'est ultra vaste comme concept… Le fait de prendre l'identité d'une personne est un de ses aspects.

Eléphant du PHP | 185 Messages

20 nov. 2008, 07:48

Une première solution serait de filtrer les caractères < 32 (sauf les retours à la ligne dans un textarea).
Après, pour les caractères invisibles, c'est vrai que c'est un peu trop variant...

ViPHP
ViPHP | 4674 Messages

20 nov. 2008, 13:39

Sinon, une solution consiste à avoir un filtre variant en fonction de la localisation de l'utilisateur.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 185 Messages

20 nov. 2008, 19:24

Pas facile facile... :/