|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre actif
![]() Inscription : février 2006 Messages : 199 ![]() |
Bonjour,
Je viens de mettre au point des fonctions sécurisées compatible UTF-8. Fonction pour vérifier un email et une autre pour du texte à partir d'un formulaire. On peut facilement le modifier pour d'autre type de vérification (par ex adresse d'un site) Concernant l'UTF-8, j'ai fait en sorte d'avoir un regex compatible étant donné que je n'ai rien trouvé sur le net sur une expression rationnelle existante, donc je l'ai fait à ma petite sauce... Voilà donc le code à mettre dans une page nommée security.php et tester vous-même... Donc merci de dire si vous voyez des trous de sécurités, ainsi que leurs solutions possible, ça permettra d'améliorer les fonctions pour le grand bien de la communauté. A bientôt... Code :
|
||
|
|
00
|
|
|
#2 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Suivant ton SGDB, addslashes ne suffit pas
Pour mysql par exemple, il faut mysql_real_escape_string. Si on ne prend pas l'aspect SGDB en compte, alors pas besoin du addslashes. Je serais plus d'avis donc de ne pas mettre le addslashes ici automatiquement, mais au cas par pas à l'insertion dans les requetes. Toujours pour addslashes, je te conseil,
Je traiterais pas le mail pareil que le text. Pour moi, si htmlentities($mail) != $mail , alors ALERTE GENERALE Quand on est dans ce cas la, l'email ne peut pas être accepté. Sinon, le principe est bon.
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#3 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
Non, ce n'est pas tout à fait correct. Dès lors que l'on utilise addslashes() et htmlentities() dans le même objectif, il y a un gros souci.
Lis au moins l'introduction de ce tutoriel : Initiation aux expressions régulières en PHP
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#4 | |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Citation:
Mais oui, dans un contexte général (seul à prendre en compte vu que tu partage tes sources), alors le htmlentities doit être fait juste avant l'affichage et pas avant
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
|
00
|
|
|
#5 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Dans le sens où une base de données est prévue pour conserver uniquement des données brutes, dénuées de tout caractère de présentation, c'est une erreur d'utiliser htmlentities() à des fins de stockage. Que se passe-t-il le jour où tu dois utiliser ta BDD pour créer autre chose qu'une page Web, par exemple un PDF, un fichier Flash ou que sais-je encore ? Il te faudra réviser le contenu de la BDD ainsi que tous les scripts...
Non, vraiment, arrêtez d'utiliser htmlentities() à tout va. Laissez son rôle à chaque élément : la BDD stocke des infos brutes, le langage de script remplit la BDD, récupère les infos et les met en forme, etc. Si vous ne vous y conformez pas, vous rencontrerez de gros problèmes un jour ou l'autre.
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Développeur informatique Inscription : février 2005 Messages : 2 982 ![]() |
Citation:
Prosternez-vous sur ces paroles, développeur infidèles.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !... |
|
|
|
00
|
|
|
#7 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
J'y pense, tu utilises strip_tags() en combinaison avec htlmentities() : cela signifie que je ne pourrais pas poster du code HTML, même pour donner un exemple. C'est très peu pratique.
Si tu le fais à des fins de sécurité, dis-toi que l'appel à htmlentities() convertit tous les < et > en leurs équivalents HTML, ce qui fait que personne ne peut exploiter la faille XSS qui, j'imagine, est la cause principale de la présence de strip_tags(). Conclusion : si tu utilises htmlentities(), tu n'as pas besoin d'utiliser strip_tags().
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#8 |
![]() Développeur Web Inscription : juillet 2003 Messages : 676 ![]() |
Je dirais même plus
En fait, je pense qu'il faut distinguer 2 types de filtres. Ceux qui permettent d'obtenir un string "propre" et ceux qui IMPOSENT un modèle. Personnellement, pour chaque variable dont je connais clairement le modèle, il doit être ainsi, ou ne sera pas. Par exemple, si on attend un chiffre, pas besoin de htmlentities, addslashes, strip_tag.....ni rien. On vérifie, c'est un chiffre, pas besoin d'aller plus loin dans les filtres, c'est pas un chiffre -> Exception directe. Ainsi, tu vérifie pour ton mail Code :
eregi('^[a-zA-Z0-9\._-]+@[a-zA-Z0-9\.-]+\.[a-zA-Z]{2,4}$', $value); Ensuite, pour les textes sans "modèles", comme le dit Yogui, éviter le strip_tag car ça supprime beaucoup d'informations, les slashes, uniquement lors de la requete SQL et les htmlentities et htmlspecialchars uniquement avant l'affichage.
__________________
Articles sur developpez.com - Gestion des exceptions avec PHP5 - Chiffrement et hash en PHP contre l'attaque Man in the middle - Aedituus - Espace membre sécurisé en PHP5 Lithium : ORM ActiveRecord PHP5 extrêmement léger |
|
00
|
|
|
#9 |
|
Membre actif
![]() Inscription : février 2006 Messages : 199 ![]() |
Bonjour et merci à tous pour la participation...
Si j'ai le temps la semaine prochaine, je mettrais à jour le code en prenant en compte vos remarques. A bientôt... |
|
|
00
|
|
|
#10 | ||
|
Membre actif
![]() Inscription : février 2006 Messages : 199 ![]() |
Bonjour à tous,
Donc voic ce que j'ai fait d'après ce que vous m'avez dit. Remarquez que ce soit destiné à l'affichage direct ou la mise en base de donnée, je veux avoir le même code d'où l'utilisation du htmlentities au sein du script et non à l'affichage. Je pense qu'il y a une erreur quelque part justement concernant les potentielles attaques XSS, mais je n'arrive pas hacker mon script, donc si vous arrivez dites le moi afin de palier au manque de sécurité. J'ai mis 2 fonctions pareilles actives, donc désactivez l'une d'entre-elle pour tester le script. A bientôt... Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com