Protection des variables & expression régulière - 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 : Protection des variables & expression régulière (/showthread.php?tid=2093) |
Protection des variables & expression régulière - Plume - 04-12-2007 Coucou ! Désolé de ne pas vous l'avoir dit plutôt mais en PHP, je suis un assisté :oops: J'ai une question stupide, qui touche au détail & dont je suis à peu près sûr de la réponse. J'ai une fonction comme suit : Code PHP :
Une fois que mes variables sont passées à la moulinette, je les passe dans une expression régulière comme ceci : Code PHP :
Question subsidiaire : Si je suis obligé de les prendre en compte, les caractères échappés, comment je fais pour que ça ne me dise pas que ma valeur ne vérifie pas mon expression ? En gros, une expression régulière qui soit suffisamment générale. Note : J'ai pris un exemple que j'ai développé. En réalité, je ne fais pas la transformation des variables avant de les soumettre à l'expression régulière. C'était juste pour la situation. Et la question, c'est juste pour la `culture' ( ? ) ~L~ RE: Protection des variables & expression régulière - naholyr - 04-12-2007 L'erreur c'est que tu fais deux choses totalement différentes : 1. Vérifier la validité syntaxique de l'email (il ne faut donc RIEN échapper ici, évidemment) 2. Vérifier que l'adresse e-mail est déjà utilisée (il faut donc ici échapper la variable avec mysql_real_escape_string()). Dans chacune de ces vérifications (qui devraient a priori faire l'objet d'une méthode chacune), tu ne dois partir de la variable "pure" telle qu'envoyée par le visiteur, et ensuite la travailler (dans le cas 1, aucune modif, dans le cas 2 il faut l'échapper avant de lancer la requête). RE: Protection des variables & expression régulière - Plume - 04-12-2007 Non, mais c'était juste pour la question xD En réalité, je fais comme ça : Code PHP :
Ceci dit, je ne fais pas 2 méthodes .. Pourquoi en ferais-je deux ? Je sais bien que celle là fait deux choses, ce qui n'est pas `éthymologiquement' correct mais bon .. Est-ce réellement utile ? ~L~ RE: Protection des variables & expression régulière - naholyr - 04-12-2007 Ça servirait à ce que le "parseVariables" appelé au milieu ne passe pas inaperçu par exemple Et même au niveau de l'organisation du code et de la sémantique : on a une fonction "isValidMail($email)" qui vérifie classiquement la syntaxe de l'adresse e-mail, et "isAlreadyUsedMail($email)" qui vérifie si l'adresse e-mail est déjà utilisée. Dans les deux cas on prend une email en paramètre, une chaine, pas une variable passée par $_GET ou $_POST, on n'a pas à s'en préoccuper ici, et donc dans la seconde en toute logique on ne fera pas un addslashes() dessus mais plutôt un mysql_real_escape_string() (ou un escape abstrait) mais pas . C'est plutôt l'utilité de la fonction parseVariables() (et surtout son nom) que je trouve ici un peu détournée, d'ailleurs dans le deuxième code que tu donnes tu l'utilises sur une chaine de caractère ($mailSubmited) alors qu'elle n'est censée prendre qu'un array P.S: Submitted en anglais c'est avec deux 't' RE: Protection des variables & expression régulière - Plume - 04-12-2007 naholyr a écrit :Ça servirait à ce que le "parseVariables" appelé au milieu ne passe pas inaperçu par exempleJ'vois mal le problème avec le fait qu'il passe inaperçu .. naholyr a écrit :Et même au niveau de l'organisation du code et de la sémantique : on a une fonction "isValidMail($email)" qui vérifie classiquement la syntaxe de l'adresse e-mail, et "isAlreadyUsedMail($email)" qui vérifie si l'adresse e-mail est déjà utilisée.Oui, ça j'avais bien compris. C'est justement sur ça que portait ma question. Je cernais déjà cette vision de la chose, mais je m'interrogeais sur la nécessité pour le coup naholyr a écrit :Dans les deux cas on prend une email en paramètre, une chaine, pas une variable passée par $_GET ou $_POST, on n'a pas à s'en préoccuper ici, et donc dans la seconde en toute logique on ne fera pas un addslashes() dessus mais plutôt un mysql_real_escape_string() (ou un escape abstrait) mais pas .Il faut quand même bien traité les variables en fonction du fait que les magic quotes sont actives ou pas, non ? Que ce soit avant l'appel de la méthode, c'est pareil. naholyr a écrit :C'est plutôt l'utilité de la fonction parseVariables() (et surtout son nom) que je trouve ici un peu détournée, d'ailleurs dans le deuxième code que tu donnes tu l'utilises sur une chaine de caractère ($mailSubmited) alors qu'elle n'est censée prendre qu'un arrayPour l'erreur de type, je suis owned ^^ J'avoue. Mais finalement, mon `perfectionnisme' me reprend. J'vais suivre la logique naholyr a écrit :P.S: Submitted en anglais c'est avec deux 't'Ouais bon ça va .. Ca arrive les erreurs iffle: |