Mücadele Botları (C#)

Christian Wenz tarafından

PDF’yi İndir

Otomatik botlar web günlüklerini ve diğer web sitelerini istenmeyen posta ile alır, herhangi bir kullanıcı etkileşimi olmadan yorum formları gönderir. ASP.NET AJAX Denetim Araç Seti'ndeki NoBot denetimi bu botlarla mücadeleye yardımcı olabilir.

Genel Bakış

Otomatik botlar web günlüklerini ve diğer web sitelerini istenmeyen posta ile alır, herhangi bir kullanıcı etkileşimi olmadan yorum formları gönderir. ASP.NET AJAX Denetim Araç Seti'ndeki NoBot denetimi bu botlarla mücadeleye yardımcı olabilir.

Adımlar

Botları yenmeye yönelik yaygın yaklaşımlardan biri, Bilgisayarlara ve İnsanlara Ayrı Olduğunu söylemek için CAPTCHAs Tamamen Otomatik Genel Turing testini kullanmaktır. Turing testi aslında bir iletişim ortağının insan mı yoksa makine mi olduğuna karar vermesi gereken bir testti. Web'de CAPTCHA genellikle üzerinde bazı bozuk harfler bulunan bir görüntüden oluşur. Fikir, görüntüdeki harfleri yalnızca bir insanın okuyabileceği, ancak OCR algoritmalarının başarısız olacağıdır.

Bu yaklaşımın çeşitli avantajları ve dezavantajları vardır, ancak bunun bir tartışması bu öğreticinin kapsamı dışındadır. Ancak ASP.NET AJAX Denetim Araç Seti'nde benzer bir yaklaşım sağlayan bir denetim vardır: NoBot. CapTCHA'nın üstesinden gelmekten daha kolaydır, ancak kullanımı çok kolaydır ve çoğu istenmeyen posta girişimi yenilirse başarı olarak kabul edilen bloglar gibi web sitelerinde son derece iyidir ve NoBot kontrol tarafından yapılabilir.

NoBot bu koşullardan en az biri karşılanırsa geçerli ASP.NET web formunun geri göndermesini durdurur:

  • Tarayıcı bir JavaScript bulmacasını çözemiyor (örneğin, JavaScript devre dışı bırakıldığında)
  • Kullanıcı formu hızlı bir şekilde gönderdi
  • İstemci IP adresi formu belirli bir süre içinde çok sık gönderdi.

Bu koşulları denetlemek için denetim NoBot bu öznitelikleri gerektirir (tümü isteğe bağlı):

  • ResponseMinimumDelaySeconds geri göndermeler arasındaki minimum saniye miktarı
  • CutoffWindowSeconds bir IP'den geri göndermelerin ölçü olduğu zaman aralığı uzunluğu
  • CutoffMaximumInstances zaman aralığı başına en fazla saniye miktarı

Aşağıdaki işaretleme, geri göndermeler arasında en az iki saniyenin geçmesini ve 30 saniyelik bir aralık içinde yalnızca beş veya daha az geri göndermenin olması gerekir:

<ajaxToolkit:NoBot ID="nb" runat="server" CutoffMaximumInstances="5"
 CutoffWindowSeconds="30" ResponseMinimumDelaySeconds="2" />

Ardından her zamanki gibi, ASP.NET AJAX kitaplığının yüklenmesi ve Denetim Araç Seti'nin kullanılabilmesi için öğesini sayfaya eklediğinizden ScriptManager emin olun:

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

Denetimlerin NoBot çoğu sunucu tarafında yapıldığından, bu doğrulamaların sonucunu denetlemeniz gerekir. Bu, 'nin IsValid() yöntemi çağrılarak NoBotyapılabilir. türünde NoBotStatebir out bağımsız değişkeni (parametre/ByRefparametre olarak) vardır. Dize gösterimi, denetimin başarısız olmasının nedenini ve Valid aksini içerir. Aşağıdaki kod, sonucuna NoBotgöre bir ileti çıkışı oluşturur:

<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>

Son olarak, göndermek için bir forma ve iletinin çıktısını almak için bir etiket öğesine ihtiyacınız var ve işiniz bitti!

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" />

Bu betiği çalıştırıp JavaScript'i devre dışı bıraktığınızda veya formu ilk iki saniye içinde gönderdiğinizde ya da otuz saniye içinde yedi kez gönderdiğinizde bir hata iletisi alırsınız. Ancak kullanıcıların yalnızca %90-95'i JavaScript'i etkinleştirdiğinden, kullanıcıların %5-10'u testi başarısız NoBotolacağından bu denetimi akıllıca kullanın.

Bu hata iletisine bir bot neden olmuş olabilir

Bu hata iletisine bir bot neden olmuş olabilir (Tam boyutlu görüntüyü görüntülemek için tıklayın)