Partager via


Lutte contre les robots (VB)

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 commentaire 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 commentaire 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 de turing public complètement automatisé CAPTCHAs pour distinguer ordinateurs et humains. Un test de Turing était à l’origine un test où quelqu’un devait décider si un partenaire de communication était 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.

Il existe plusieurs avantages et inconvénients à cette approche, mais une discussion à ce sujet dépasse le cadre de ce tutoriel. Il existe toutefois un contrôle dans le ASP.NET AJAX Control Toolkit qui fournit une approche similaire : NoBot. Il est plus facile à surmonter qu’un CAPTCHA, mais est très facile à utiliser et les tarifs extrêmement 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 vaincus, ce que le NoBot contrôle peut faire.

NoBot intercepte la publication du formulaire web ASP.NET actuel si au moins l’une de ces conditions 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 trop souvent envoyé le formulaire dans un certain laps de temps.

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

  • ResponseMinimumDelaySeconds nombre minimal 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 nombre maximal 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 dans ScriptManager la page afin que la bibliothèque AJAX ASP.NET soit chargée et que control Toolkit 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 pour laquelle le case activée échoue et Valid sinon. Le code suivant génère un message en fonction NoBotdu résultat :

<script runat="server">
 Sub Page_Load()
 If Page.IsPostBack Then
 Dim state As NoBotState
 If Not nb.IsValid(state) Then
 Label1.Text = "Data refused (" + HttpUtility.HtmlEncode(state.ToString()) + ")"
 Else
 Label1.Text = "Data entered."
 End If
 End If
 End Sub
</script>

Enfin, vous avez besoin d’un formulaire à envoyer et d’un élément label 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, étant donné que seulement environ 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 (Cliquez pour afficher l’image en taille réelle)