Partager via


Lutte contre les robots (C#)

par Christian Wenz

Télécharger le PDF

Les bots automatisés enduitnt des weblogs et d’autres sites web avec du courrier indésirable, en soumettant des formulaires de commentaires sans aucune interaction de l’utilisateur. Le contrôle NoBot dans le ASP.NET AJAX Control Toolkit peut vous aider à combattre ces bots.

Vue d’ensemble

Les bots automatisés enduitnt des weblogs et d’autres sites web avec du courrier indésirable, en soumettant des formulaires de commentaires sans aucune interaction de l’utilisateur. Le contrôle NoBot dans le ASP.NET AJAX Control Toolkit peut vous aider à combattre ces bots.

Étapes

Une approche courante pour vaincre les bots consiste à utiliser le test CAPTCHAs Complètement Automatisé Public Turing pour distinguer ordinateurs et humains. Un test Turing était à l’origine un test où quelqu’un devait décider si un partenaire de communication est un humain ou une machine. Sur le web, un CAPTCHA se compose généralement d’une image avec des lettres déformées. L’idée est que seul un humain peut lire les lettres sur l’image, alors que les algorithmes OCR échouent.

Cette approche présente plusieurs avantages et inconvénients, mais une discussion à ce sujet dépasse le cadre de ce tutoriel. Il existe toutefois un contrôle dans le ASP.NET kit de ressources de contrôle AJAX qui fournit une approche similaire : NoBot. Il est plus facile à surmonter qu’un CAPTCHA, mais est très facile à utiliser et se classe très bien sur les sites web comme les blogs où il est considéré comme un succès si la plupart des tentatives de courrier indésirable sont vaincues, ce que le NoBot contrôle peut faire.

NoBot intercepte la publication du formulaire web actuel ASP.NET si au moins l’une des conditions suivantes est remplie :

  • Le navigateur ne parvient pas à résoudre un casse-tête JavaScript (pour instance lorsque JavaScript est désactivé)
  • L’utilisateur a envoyé le formulaire à fast
  • L’adresse IP du client a envoyé le formulaire trop souvent dans un certain laps de temps.

Pour case activée pour ces conditions, le NoBot contrôle nécessite ces attributs (tous facultatifs) :

  • ResponseMinimumDelaySeconds durée minimale de secondes entre les publications
  • CutoffWindowSeconds durée de l’intervalle de temps dans lequel les publications à partir d’une adresse IP sont des mesures
  • CutoffMaximumInstances quantité maximale de secondes par intervalle de temps

Le balisage suivant exige qu’au moins deux secondes s’écoulent entre les publications et qu’il n’y ait que cinq publications 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 afin que la bibliothèque ajax ASP.NET soit chargée et que le Kit de ressources de contrôle puisse être utilisé :

<asp:ScriptManager ID="asm" runat="server" />

Étant donné que la plupart des vérifications NoBot se produisent côté serveur, vous devez case activée le résultat de ces validations. Pour ce faire, appelez NoBotla méthode de IsValid() . Il a un argument (en tant que out paramètre/ByRef paramètre) qui est de type NoBotState. Sa représentation sous forme de chaîne contient la raison de l’échec de l’case activée et Valid sinon. Le code suivant génère un message en fonction NoBotdu résultat de :

<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 à envoyer et d’un élément d’étiquette pour générer le message, et vous avez terminé !

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 et désactivez JavaScript ou envoyez le formulaire dans les deux premières secondes ou envoyez le formulaire sept fois dans les trente secondes, vous obtenez un message d’erreur. Toutefois, utilisez ce contrôle à bon escient, puisque seulement 90 à 95 % des utilisateurs ont activé JavaScript, par conséquent, 5 à 10 % des utilisateurs échoueront NoBotau test.

Ce message d’erreur peut avoir été provoqué par un bot

Ce message d’erreur peut avoir été provoqué par un bot (Cliquer pour afficher l’image de taille réelle)