Salut a tous,
je suis en train de me demander quelles sont les caractère a interdire lors de la saisi d'un nom d'utilisateur?
(ps:je fait un stiptags avant)
Salut a tous,
je suis en train de me demander quelles sont les caractère a interdire lors de la saisi d'un nom d'utilisateur?
(ps:je fait un stiptags avant)
tout depend de ce que tu en fais si tu veux l'afficher ou non.
en générale on le crypt en db.
choisi plutot les caractere que tu utilises.
car si tu tombe sur un utilisateur vicieux ;-)
il peut tjrs utiliser l'ASCII pour rentrer des sigles "bizarre"
£ô♂♪
A part avoir des caractere bizarre a l'affichage il n'y a pas d'autres risques?Envoyé par XtofRoland
Ca me dérange pas si les utilisateurs utilise des pseudo étrange (tant qu'il ne l'oublie pas ).
controlle juste l'sql injection et le cross site scripting, apres le login qu'il choisi , tu t'en fouEnvoyé par Death83
Salut
Si tu es concerné par la sécurité, ce n'est pas seulement au niveau du login qu'il faut agir mais à chaque données utilisateur.
En outre, il ne faudrait pas "interdire des chars" mais au contraire "autoriser une liste précise" au moyen de regex.
il existe des caracteres non affichableA part avoir des caractere bizarre a l'affichage il n'y a pas d'autres risques?
Ca me dérange pas si les utilisateurs utilise des pseudo étrange (tant qu'il ne l'oublie pas ).
J'ustement j'utilise les REGEX.Envoyé par Kirkis
Et je voulais savoir quel sont les caractères a enlevé (pour faire ma liste jsutement ).
Par exemple phpbb autorise la pluspart des caractères. ( ( & ° $ )....
Ce qui est plus sympa pour personnaliser son pseudo.
Perso en Latin-1 j'autorise tout les caractères imprimables non blancs + l'espace (n° 32 => 126 et 161 => 255)
Bien sûr je prends garde aux injections SQL, et à l'affichage j'utilise htmlspecialchars( ).
Y'a rien de pire que les sites qui refusent les pseudos contenant des é ou des . sans raison valable, en général je n'y remets jamais les pieds.
Je suis de l'avis de Séb, il n'y a pas vraiment de raison de supprimer des caractères du moment que tu prends garde aux injections, ce qui est réglé avec mysql_real_escape_string().
Si vraiment tu veux brider les cars autorisés, n'utilise pas une classe négative mais plutôt une liste blanche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if(preg_match('/[^&%$...]*/', $login) // pas bon if(preg_match('/[a-z][a-z0-9`@|...]*/i', $login) // ok
A part le dièse, quel caractère pourrait poser problème ?
Les espaces, les quotes, les doubles quotes, ...Envoyé par macbook
Curieux. Si l'on filtre correctement les données de l'utilisateur comment les quotes et doubles quotes peuvent interférer dans une requête, ou dans un affichage ?
Pour les espaces je suis plus perplexe.
Non les espaces ca marche tres bien. (la preuce sur phpbb on peut se faire des pseudo avec des espaces.
POur ce qui est des ' et des " un addslashes et stipslashes suffit.
Par contre, pour éviter les injection est-ce que stripstags suffit?
?! Pourquoi addslashes( ) ?Envoyé par Death83
Si les magic-quotes sont activées : faire un stripslashes( ) sur les éléments de $_POST
Ensuite pour éviter toute injection SQL et échapper les ' et les " : mysql_real_escape_string( )
Tu ne devrais pas avoir besoin de addslashes( ).
Tu parles des injections HTML ? Si tu fais du striptags( ) ça revient à interdire le caractère < .Envoyé par Death83
Pour éviter d'interdire tout caractère imprimable j'utilise htmlspecialchars( ). => Ex : un user s'appele "<strong>", à l'affichage je fais :
À l'écran : <strong>
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo htmlspecialchars($nickname, ENT_QUOTES) ;
Dans la source : <strong>
=> Pas de problème
En gros pour etre serrain il faut faire un mysql_real_escape_string( ) à la saisie et un htmlspecialchars( ) à l'affichage et ca devrait être bon.
C'est bien ca?
Pour être précis, htmlspecialchars() et htmlentities() ne font pas partie de la sécurité. C'est pour être content que tu les utilises, pour éviter des bugs d'affichage.
Sinon oui, pour être serein, mysql_real_escape_string() suffit. Pas besoin d'interdire des caractères.
Un utilisateur x qui exécute un JavaScript chez un utilisateur y ce n'est pas qu'un bug d'affichageEnvoyé par Kirkis
Okay, je retire ce que j'ai dit plus haut.
Je ne suis pas un vicieux moi, je ne pense jamais à ces trucs-là...
juste pour vous prendre la tete ;-)
dans le cas ou vous transformez <strong> en <strong>
je choisi le pseudo <<<<<<<<<<<<<<< car le formulaire me permet de rentrer x caracteres
en base de données <<<<<<<<<< soit 4 fois plus de char
c'est une bétise mais bon faut y penser.
Non, tu n'enregistres pas le htmlspecialchars(), tu l'affiches.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager