YUDA SUDRAJAT

yuda-sudrajat.blogspot.com

Pengertian:
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.

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.
Request: "
+ state.ToString()

Else

lblStatus.BackColor = Drawing.Color.Red 'jika tidak isValid, login ditolak, warna backcolor merah

lblStatus.Text = "Login Ditolak.
Request: "
+ state.ToString()

End If

Dim sb As New StringBuilder

For Each kvp As KeyValuePair(Of DateTime, String) In NoBot.GetCopyOfUserAddressCache()

sb.AppendFormat("{0}: {1}
"
, kvp.Key.ToString("u"), kvp.Value)

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.



Read More......

Artikel ini membahas cara membuat jam yang bisa update sendiri tanpa harus merefresh browser pada ASP.NET . Topik ini memang sudah basi (bagi kebanyakan orang), tapi bagi newbie seperti gw, ini hal yang baru, soalnya baru semester 7 ini gw dapet mata kuliah ASP.NET.


Jadi, untuk membuat jam yang merefresh sendiri itu sangat amat mudah banget sekali pisan. Modalnya cuman ScriptManager, UpdatePanel Timer dan Literal (buat nampilin jam nya), yang tinggal di drag dari Toolbox AjaxExtention.

Caranya, Tinggal drag and drop aja langsung dari toolbox ke halmaan Default.aspx. Pertama, drag Scriptmanager, lalu UpdatePanel, lalu Literal dan Timer (pada properties, set interval nya ke 1000, artinya, tiap satu detik dia update jam). Lalu Klik dua kali tombol timer, dan ketik coding singkat berikut:

literal1.Text = DateTime.Now.toString();

Abis itu pijit Ctrl+F5, selesai!

Gitu aja dari gw, selamat mencoba ya.





Read More......

Dah lama banget gw gak ngeblog,,kemasalan ini bikin gw jadi bener-bner goBlog dah..tapi it's ok, gw sudah sadar sekarang,, demi orang tua gw dan demi kemajuan hidup gw tentunya, gw gak akan malasan-malasan lagi. Hari ini, gw mengancungkan bendera permusuhan dengan yang namanya kemalasan.



Sekarang gw sudah semester 7, lagi ngegarap skripsi. Thx berat buat tim skripsi gw yang udah sangat amat pengertian dengan kondisi gw sekarang. Terutama gw berterima kasih banget buat andre dan ilham. Tanpa mereka, kayaknya programnya gak bakalan jadi dah.

Ok. cukup ngebacotnya. Tujuan postingan ini adalah, seperti judul blog gw, untuk bagi-bagi ebook tentang C#, VB.NET dan ASP.NET. Gw punya banyak banget koleksi ebook di atas, thx to google yang udah mempertemukan gw dengan website keren dimana gw nemu banyak banget ebook di sana. kalo ebook yang gw share ini merasa kurang cukup, kalian bisa download langsung di sini

Nah, kalian bisa langsung downlaod di situsnya. Ada banyak banget koleksi ebook disitu, semuanya tentang teknologi microsoft terbaru, yaitu .NET 3.5. Ada ebook tentang SQL, LINQ, semuanya gratis dan membahas langkah demi langkah.

Ok..segini dulu aja, entar gw upload di indowebster dah biar cepet. sekarang gw lagi sibuk banget.hehe



Read More......

Tentang Saya

Jakarta, DKI Jakarta, Indonesia
gw orangnya Ambisius, Ulet, Tegar, Intuitif, dan Sopan. Kalo disingkat: A U T I S

Yahoo! Messenger