Mücadele Botları (VB)
Christian Wenz tarafından
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ğuCutoffMaximumInstances
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 NoBot
yapılabilir. türünde NoBotState
bir out
bağımsız değişkeni (parametre/ByRef
parametre 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 NoBot
gö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 NoBot
olacağından bu denetimi akıllıca kullanın.
Bu hata iletisine bot neden olmuş olabilir (Tam boyutlu görüntüyü görüntülemek için tıklayın)