defr/DualBlog
view comment.php @ 71:464f4b94ee27
Filtrage de certaines balises HTML, meilleure détection de la validité XML.
Plusieurs choses en une, toute tournant autour d'un meilleur traitement du
commentaire soumis:
- on utilise désormais stripslashes pour correctement gérer la valeur
d'éventuels arguments
- on filtre, via le DOM, les balises qui pourraient s'avérer peut sure, ou
être utilisé pour une attaque de type cross-site scripting. L'utilisation
de getElementsByTagName devrait se charger d'attaque du type <html:script
/> ou l'utilisateur utilise un namespace non standard pour déjouer une
comparaison de chaînes.
Plusieurs choses en une, toute tournant autour d'un meilleur traitement du
commentaire soumis:
- on utilise désormais stripslashes pour correctement gérer la valeur
d'éventuels arguments
- on filtre, via le DOM, les balises qui pourraient s'avérer peut sure, ou
être utilisé pour une attaque de type cross-site scripting. L'utilisation
de getElementsByTagName devrait se charger d'attaque du type <html:script
/> ou l'utilisateur utilise un namespace non standard pour déjouer une
comparaison de chaînes.
| author | Franck Deroche <webmaster@defr.org> |
|---|---|
| date | Thu Mar 20 19:45:08 2008 +0100 (2008-03-20) |
| parents | d4f26e9767bf |
| children | 217f56e6bc77 |
line source
1 <?php
9 // Enregistrement éventuel d'un commentaire dans la base de données
16 // Si on essaie d'ajouter un commentaire et que la graine n'est pas bonne
20 if(!is_null($Auteur) && $Auteur!='Votre Nom' && $Auteur != $Adresse && !empty($Comment) && strlen($Comment) > 6 && strpos($Comment, 'xanga') === false) {
21 // Prévention d'un "cassage" par ajout d'un commentaire incorrectement formaté
25 /* Akismet */
33 );
38 // Suppression d'un gros lourd
43 // Si le post est conforme XML, on recherche des balises indésirables
45 {
48 {
51 {
54 }
55 }
56 }
57 // Sinon le post n'est pas conforme XML, on supprime toute balise
58 else
62 INSERT INTO Commentaires(MessId, Auteur, Adresse, AdresseMail, Comment, DateComment, ip, Visible)
63 VALUES({$id}, '{$Auteur}', '{$Adresse}', '{$AdresseMail}', '{$Comment}', '{$DateComment}', '{$ip}', $visible)
67 mail(ADMIN_MAIL, 'Nouveau commentaire de ' . $Auteur, $Auteur . " vient de mettre en ligne le commentaire suivant: \n" . wordwrap($Comment, 70));
68 }
70 // Ajout du post au squelette
77 // On définit le titre
80 // Récupération des commentaires
89 $grav_url = 'http://www.gravatar.com/avatar.php?gravatar_id=' . $grav_id . '&size=50&default=' . $defaultGravatar;
103 );
106 }
110 }
112 // Génération de la graine (cette dernière permet de s'assurer
113 // que l'essai d'ajout de commentaire provient bien de ce
114 // formulaire, et en conséquence devrait permettre de réduire
115 // le spam.
119 // Ajout du formulaire d'enregistrement de commentaires
125 ?>
