Mücadele Botları (VB)

Christian Wenz tarafından

PDF’yi İndir

Otomatik botlar weblog'ları ve diğer web sitelerini istenmeyen posta ile sıvar, 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 weblog'ları ve diğer web sitelerini istenmeyen posta ile sıvar, 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ı Ayrı bilgi vermek için CAPTCHAs Tamamen Otomatik Genel Turing testini kullanmaktır. Turing testi başlangıçta bir iletişim ortağının insan mı yoksa makine mi olduğuna karar vermeleri gereken bir testti. Web'de CAPTCHA genellikle üzerinde bazı bozuk harfler bulunan bir görüntüden oluşur. Amaç, görüntüdeki harfleri yalnızca bir insanın okuyabilmesi, ancak OCR algoritmalarının başarısız olmasıdır.

Bu yaklaşımın çeşitli avantajları ve dezavantajları vardır, ancak bunun bir tartışması bu öğreticinin kapsamının dışındadır. Ancak ASP.NET AJAX Denetim Araç Seti'nde benzer bir yaklaşım sağlayan bir denetim vardır: NoBot. Bir CAPTCHA'dan daha kolay üstesinden gelmek daha kolaydır, ancak çoğu istenmeyen posta girişimi yenilirse başarılı olduğu düşünülen bloglar gibi web sitelerinde kullanımı ve ücretleri son derece iyidir, bu da denetimin NoBot gerçekleştirebileceği bir işlemdir.

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 sayfasına öğesini 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">
 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>

Son olarak, göndermek için bir forma ve iletinin çıkışı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 formu 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'inde JavaScript etkinleştirildiğ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 bot neden olmuş olabilir

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