Lutte contre les robots (C#)
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 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 publicationsCutoffWindowSeconds
durée de l’intervalle de temps dans lequel les publications à partir d’une adresse IP sont des mesuresCutoffMaximumInstances
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 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 de l’échec de l’case activée et Valid
sinon. Le code suivant génère un message en fonction NoBot
du 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 NoBot
au test.
Ce message d’erreur peut avoir été provoqué par un bot (Cliquer pour afficher l’image de taille réelle)