AccueilBlog PHPBlog privéBlog en vracLiensPhotos
Blogs
Lolo Irie

Favoris
Certification Engineer Zend
Amélioration de ce blog...
Une application PHP Stand-alone
Lutter contre le SPAM sur un site Web
Lutter contre le SPAM sur un site Web (2)
ImageMagick sur Windows
Bienvenue
Nom d'utilisateur:

Mot de passe:


Retenir l'identification

[ S'inscrire ]
[ Mot de passe oublié? ]
Lutter contre le SPAM sur un site Web (2)
lolo_complice.pngVoilà donc un premier jet sous forme de plugin pour e107... (Version stable à télécharger dans quelques jours sur le site eTalkers France, une version beta est déjà dispo ici)

Et voici de quoi vous aider à convertir mon idée pour votre système, si vous n'êtes pas utilisateur d'e107...

Ce script cherche avant tout à lutter contre le Spam et le Flood sur vos formulaires... D'autres options de sécurité pourraient être introduites, mais ce n'est pas le but ici.


Tout d'abord voyons comment se passe la "connexion" d'un visiteur (humain ou robot) à votre site:


Cliquez sur l'image pour l'afficher en grand.




1 Le visiteur (client) envoie sa requete pour accéder à votre site

2 Il peut (ou pas) passer par un proxy pour atteindre votre site. C'est alors cet ordinateur qui sera identifié comme accédant à votre page, en lieu du visiteur

3 Après avoir vadrouillée sur Internet, baladée par différents serveurs relais, votre requete arrive aux portes de votre site éventuellement protégé par une couche hardware, genre firewall

4 Enfin la requete arrive à votre site. Là elle sera traitée et renvoyée jusqu'à l'ordinateur client.


Au niveau applicatif, on ne peut agir qu'aux niveaux 1 et 4, les autres machines n'étant que des relais.


Voici comment fonctionne en très simplifié mon script eTCaptcha, lors d'une requete, pour intervenir à ces deux niveaux:


Cliquez sur l'image pour l'afficher en grand.


Ce diagramme se passe presque de tout commentaire... car très simplifié.
Néanmoins notez, qu'avant eTCaptcha, un premier contrôle est effectué. Celui-ci est géré par exemple par fichiers .htaccess (pouvant être générés par eTCaptcha)
Mais voyons à présent le fonctionnement en détail.



Cliquez sur l'image pour l'afficher en grand.


1 Un internaute (humain ou robot) vient sur votre site. Il envoie donc sa première requête au serveur.

2 eTCaptcha commence par récupérer autant d'informations que possible sur ce visiteur et les stocke. Toujours utile.
Il s'agit notamment des variables prédéfinies de PHP et de la date...

Ensuite, s'il s'agit de la première visite ou si aucun formulaire n'a été posté, la page est retournée au client. Voir point 7.

Il semble évident ici, qu'un système plus large de protection, ne devrait pas retourner la page si aucun formulaire n'a été posté, mais uniquement s'il s'agit de la première visite.
En effet, le système pour bannir les adresses IP que vous découvrirez ultérieurement devrait déjà être appliqué, même si aucun formulaire n'est posté.
Encore une fois, ici il ne s'agit que d'un système anti Spam... Mais je pense que je changerai néanmoins cela très prochainement.

3 Si un formulaire a été posté, un premier test devrait être effectué pour tester la fréquence à laquelle le visiteur poste sur votre site en fonction de la quantité de contenu soumise.
En effet peu probable qu'un humain poste plus de 300 mots par minute, ce qui pour un robot n'est évidemment pas un problème.

En fonction du résultat de cette vérification, le visiteur peut être banni, renvoyé à la page précédente ou autorisé à poster son contenu...

4 Si l'utilisateur doit être banni, celui-ci sera inséré dans la liste des utilisateurs bannis de votre aplication et si possible, banni par votre serveur Web.
eTCaptcha utilise ainsi 2 méthodes pour bannir un utilisateur, via le système e107 et, si disponible, par écriture dynamique de fichiers .htaccess à la racine du serveur.

5 Ensuite le contenu posté est vérifié. Si celui ci contient des termes interdits (à vous de déterminer le système de filtrage requis par votre système ainsi que les conséquences), il pourra soit être rejeté, et c'est retour à la case départ (voire banni), ou être modifié avec une censure définie.

6 Enfin, la vérification que l'utilisateur est bien un humain, avec là encore, un possible retour à la case départ ou autre...

7 Si tout semble OK (ou corrigé par vos soins), alors vous pouvez sauvegarder les informations dans votre base de données et créer les clés d'identification pour les formulaires suivants.

8 Vous ajoutez le code HTML pour captcha (ou autres vérification shumaines) à TOUS vos formulaires.
La méthode À utiliser dépend évidemment de votre système.

eTCaptcha par exemple utilise un buffer (fonctions php ob_xxxx) pour récupérer le contenu HTML et y ajoute par expressions régulières le code requis.
Un truc du genre:

$pattern = '/(.*) <input(.*)type=(\'|\") (submit|image)(\'|\")/i';
$replacement = '$1' .$etcaptcha_code.' <input $2 type="$4"';
$page = preg_replace($pat tern, $replacement, $page );


Libre à vous de sophistiquer le processus:
Captcha code aléatoire, disposition aléatoire, images captcha aléatoires, solutions alternatives à captcha utilisées de façon aléatoire...

9 Et enfin joie suprême... la page peut finallement être livré à votre visiteur... qui ne s'est pas douté de tout ce qui se passait...

Voilà, en espérant que cela puisse vous servir...
Si ce n'est pas suffisant, il vous reste qu'à essayer eTCaptcha (lorsqu'il sera disponible) avec e107.

Tout commentaire sera le bienvenu.

jeudi 31 janvier 2008 - 22:57:33
Ecrire un commentaire
Seuls les membres connectés peuvent soumettre des commentaires.
Ce site est basé sur le système e107 et utilise le thème graphique Deep Blue (légèrement modifié)

Le contenu appartient aux blogueurs respectifs du site mais peut être réutilisé, si vous nommez la source.