Lutte contre les robots (VB)
par Christian Wenz
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 publicationsCutoffWindowSeconds
durée de l’intervalle de temps dans lequel les publications à partir d’une adresse IP sont des mesuresCutoffMaximumInstances
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 NoBot
la 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 NoBot
du 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 NoBot
au test.
Ce message d’erreur peut avoir été provoqué par un bot (Cliquez pour afficher l’image en taille réelle)