Lutter contre les Bots
Date de publication : 03 mai 2009 , Date de mise à jour : 03 mai 2009
Par
Christian Wenz
Philippe Vialatte (Traduction) (ma page DVP) (Blog)
Les Bots automatisés empestent les blogs et d'autres sites avec du spam, soumettant des formulaires de commentaires sans aucune interaction utilisateur.
Le contrôle
NoBot de l'ASP.NET AJAX Control Toolkit peut contribuer à lutter contre les bots.
Voir une démo
Téléchargez le code de ce tutoriel
Traduction
Étapes
Traduction
Cet article est la traduction la plus fidèle possible de l'article original :
Fighting Bots
Étapes
Une approche commune pour combattre les bots est d'utiliser les captchas
(Completely Automated Public Turing test to tell Computers and Humans Apart,
Test de Turing completement automatisé pour différencier les humains et les ordinateurs).
Un test de Turing était à l'origine un test où une personne doit décider si un partenaire lors d'une
communication est un humain ou une machine.
Sur le web, un CAPTCHA est généralement constitué d'une image, sur laquelle on voit des lettres déformées.
L'idée est que seul un humain peut lire les lettres sur l'image, alors qu'un algorithme d'OCR échouera.
Il ya plusieurs avantages et inconvénients à cette approche, mais une discussion sur ce sujet
est hors de la portée de ce tutoriel.
Il y a cependant un contrôle dans l'ASP.NET AJAX Control Toolkit, qui fournit une approche similaire: NoBot .
Il est plus facile à surmonter qu'un CAPTCHA, mais il est très facile à utiliser et fonctionne très bien sur des sites Web
comme les blogs, où on considère comme un succès si la plupart des tentatives de spam sont vaincues, ce que le contrôle NoBot peut faire.
NoBot intercepte les postback du formulaire Web ASP.NET courant si au moins l'une de ces conditions est remplie :
- Le navigateur ne parvient pas à résoudre un puzzle JavaScript (par exemple lorsque Javascript est désactivé)
- L'utilisateur a soumis le formulaire trop vite
-
L'adresse IP du client a présenté le formulaire trop souvent dans une certaine période de temps.
Afin de vérifier ces conditions, le contrôle NoBot exige ces attributs (qui sont tous facultatif) :
- ResponseMinimumDelaySeconds : minimum de secondes entre deux postbacks
-
CutoffWindowSeconds : durée de l'intervalle pendant lequel les postbacks d'une IP donnée sont mesurés
-
CutoffMaximumInstances : nombre maximal de postback dans l'intervalle de temps défini par CutoffWindowSeconds
Les balises suivantes obligent à ce qu'au moins deux secondes s'écoulent entre deux postbacks
et qu'il ya seulement cinq postbacks ou moins dans un intervalle de 30 secondes :
<ajaxToolkit:NoBot ID="nb" runat="server" CutoffMaximumInstances="5"
CutoffWindowSeconds="30" ResponseMinimumDelaySeconds="2" />
|
Ensuite, comme d'habitude, veillez à inclure le ScriptManager dans la page de sorte
que la bibliothèque ASP.NET AJAX soit chargée, et que le Control Toolkit puisse être utilisé :
<asp:ScriptManager ID="asm" runat="server" />
|
Étant donné que la plupart des contrôles effectués par NoBot le sont coté serveur,
vous avez besoin de vérifier le résultat de ces validations.
Cela peut être fait en appelant la méthode IsValid() du contrôle NoBot.
Il a un argument (un paramètre out/ByRef), qui est de type NoBotState.
Sa représentation sous forme de chaîne contient la raison lors de l'échec de la vérification et Valid autrement.
Le code suivant affiche un message selon le résultat NoBot :
<script runat="server">
void Page_Load(){
if (Page.IsPostBack){
NoBotState state;
if (!nb.IsValid(out state)){
Label1.Text = "Data refused ("
+ HttpUtility.HtmlEncode(state.ToString()) + ")";
}else{
Label1.Text = "Data entered.";
}
}
}
</script>
|
Enfin, vous avez besoin d'un formulaire à soumettre, un élément Label pour la sortie du message, et c'est fini!
Your comment:
<asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"/><br />
<input type="submit" id="Submit1" runat="server" value="Submit Form" /><br />
<asp:Label ID="Label1" runat="server" />
|
Lorsque vous exécutez ce script, si vous désactivez JavaScript, ou que vous soumettez le formulaire avant les
deux premières secondes, ou que vous soumettez le formulaire plus de cinq fois dans les trente secondes, vous obtiendrez un message d'erreur.
Mais il faut utiliser ce contrôle à bon escient, puisque seulement 90 à 95% des utilisateurs ont JavaScript
activé, donc 5 à 10% des utilisateurs ne pourront pas passer les tests de NoBot.

Ce message d'erreur peut avoir été causé par un bot


Copyright © 2009 Equipe Dotnet. Aucune reproduction, même partielle, ne peut être faite
de ce site et de l'ensemble de son contenu : textes, documents, images, etc.
sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 €
de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.
Cette page est déposée.