Pengertian:
NoBot menggunakan teknik-teknik anti-bot berikut: 1. Membuat browser client menjalankan perhitungan JavaScript dan memverifikasi hasilnya sebagai bagian dari postback. 2. Mengatur jarak waktu antara request pertama dengan request selanjutnya (postback). Jika postback terjadi terlalu cepat, NoBot akan menampilkan pesan error. 3. Mengatur pembatasan jumlah akes yang bisa dilakukan oleh satu alamat IP. Jika salah satu teknik anti-bot tersebut dilanggar (Maksudnya, jika yang mengakses situs bukan manusia), NoBot akan menampilkan pesan-pesan error seperti: posting back quickly, posting back many times, or disabling JavaScript in the browser. Contoh implementasi NoBot: Berikut ini adalah contoh sederhana implementasi NoBot Control pada situs untuk melakukan Log in. Untuk contoh ini saya menggunakan bahasa VB.NET. Halaman Default.aspx Gb.1 Design View Default.aspx Gambar di atas memperlihatkan desain view dari halaman Default.aspx yg dibuat. Pada desain view ini, saya memakai control Multiview dengan dua View. View 1 untuk login, dan view 2 untuk menampilkan status login. Selain itu saya juga menggunakan control label, textbox, button, dan tentu saja ScriptManager dan NoBot control. SourceCode Default.aspx <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Pagetitle> head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> asp:ScriptManager> <div> <asp:MultiView ID="MultiView1" runat="server"> <asp:View ID="View1" runat="server"> <table style="width:100%;"> <tr> <td> Usernametd> <td> <asp:TextBox ID="txtUsername" runat="server">Usernameasp:TextBox> td> <td> td> tr> <tr> <td> Passwordtd> <td> <asp:TextBox ID="txtPassword" runat="server">passwordasp:TextBox> td> <td> td> tr> <tr> <td> td> <td> <asp:Button ID="btnLogin" runat="server" Text="Login" /> td> <td> td> tr> table> asp:View> <asp:View ID="View2" runat="server"> <asp:Label ID="lblStatus" runat="server">asp:Label> <br /> <asp:Label ID="Label2" runat="server">asp:Label> <br /> <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Default.aspx">TryAgainasp:HyperLink> asp:View> asp:MultiView> <cc1:NoBot ID="NoBot1" runat="server" OnGenerateChallengeAndResponse="CustomChallengeResponse" /> div> form> body> html> Halaman Default.aspx.vb Imports AjaxControlToolkit Imports System.Collections.Generic Partial Class _Default Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If (IsPostBack) Then 'Jika postback, tampilkan view3, jika tidak, tampilkan view 1 MultiView1.SetActiveView(View2) Dim state As NoBotState If (NoBot1.IsValid(state)) Then lblStatus.BackColor = Drawing.Color.White 'jika isValid, lblStatus menmapilkan login sukses lblStatus.Text = "Login sukses. Else lblStatus.BackColor = Drawing.Color.Red 'jika tidak isValid, login ditolak, warna backcolor merah lblStatus.Text = "Login Ditolak. End If Dim sb As New StringBuilder For Each kvp As KeyValuePair(Of DateTime, String) In NoBot.GetCopyOfUserAddressCache() sb.AppendFormat("{0}: {1} Next Label2.Text = sb.ToString() 'menampilkan tanggal dan ip Else MultiView1.SetActiveView(View1) ' view1 End If End Sub Protected Sub CustomChallengeResponse(ByVal sender As Object, ByVal e As NoBotEventArgs) Dim p As New Panel p.ID = "NoBotSamplePanels" Dim rand As New Random p.Width = rand.Next(300) p.Height = rand.Next(200) p.Style.Add(HtmlTextWriterStyle.Visibility, "hidden") p.Style.Add(HtmlTextWriterStyle.Position, "absolute") sender.Controls.Add(p) e.ChallengeScript = "vae e = documents.getElementById('" + p.ClientID + "');e.offsetwidth*e.offsetHeight;" e.RequiredResponse = (p.Height.Value * p.Width.Value).ToString() End Sub End Class Screenshots Halman Jadi Gb2. Halaman Login Gambar di atas adalah halaman login dimana user bisa memasukan username dan password pada field yang disediakan. Jika verifikasi oleh NoBot Control sukses, maka akan muncul gambar di bawah. Gb.3 Login Sukses Gambar di atas menampilkan pesan "Login Sukses" jika NoBot tidak menemukan adanya pelanggaran yang dilakukan oleh user, seperti login terlalu cepat, javascript browser tidak aktif, dll. Gb 4. Login ditolak Namun pada gambar di atas, jika user mencoba login lagi pada waktu kurang dari 3 detik (Saya set ResponseMinimumDelaySeconds = 2 detik) , maka NoBot akan mengaggap user bukanlah manusia, dan menampilkan pesan InvalidResponseTooSoon Untuk lebih jelasnya, berikut ini saya lampirkan sourcecode lengkap program di atas. Terima kasih.
NoBot adalah Ajax Control yang berfungsi untuk pencegahan spam atau bot tanpa membutuhkan intervensi dari user. Berbeda dari CAPTCHA yang menghendaki user untuk memasukan gambar yang tertera pada layar, NoBot bersifat invisible atau tidak terlihat oleh user, dan sama sekali tidak membutuhkan campur tangan user.

Request: " + state.ToString()
Request: " + state.ToString()
", kvp.Key.ToString("u"), kvp.Value)


Post a Comment