Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
oleh Christian Wenz
Bot otomatis plester weblog dan situs web lain dengan spam, mengirimkan formulir komentar tanpa interaksi pengguna. Kontrol NoBot di ASP.NET AJAX Control Toolkit dapat membantu melawan bot tersebut.
Gambaran Umum
Bot otomatis plester weblog dan situs web lain dengan spam, mengirimkan formulir komentar tanpa interaksi pengguna. Kontrol NoBot di ASP.NET AJAX Control Toolkit dapat membantu melawan bot tersebut.
Langkah-langkah
Salah satu pendekatan umum untuk mengalahkan bot adalah menggunakan CAPTCHAs Uji Turing Publik Sepenuhnya Otomatis untuk memberi tahu Komputer dan Manusia Terpisah. Tes Turing awalnya adalah tes di mana seseorang perlu memutuskan apakah mitra komunikasi adalah manusia atau mesin. Di web, CAPTCHA biasanya terdiri dari gambar dengan beberapa huruf terdistorsi di dalamnya. Idenya adalah bahwa hanya manusia yang dapat membaca huruf pada gambar, sedangkan algoritma OCR akan gagal.
Ada beberapa keuntungan dan kerugian dari pendekatan ini, tetapi diskusi tentang hal ini berada di luar lingkup tutorial ini. Namun, ada kontrol dalam ASP.NET AJAX Control Toolkit yang menyediakan pendekatan serupa: NoBot
. Lebih mudah untuk mengatasi daripada CAPTCHA, tetapi sangat mudah digunakan dan tarif sangat baik di situs web seperti blog di mana dianggap sukses jika sebagian besar upaya spam dikalahkan, yang NoBot
dapat dilakukan kontrol.
NoBot
mencegat postback formulir web ASP.NET saat ini jika setidaknya salah satu kondisi ini terpenuhi:
- Browser gagal memecahkan teka-teki JavaScript (misalnya ketika JavaScript dinonaktifkan)
- Pengguna mengirimkan formulir ke cepat
- Alamat IP klien mengirimkan formulir terlalu sering dalam jangka waktu tertentu.
Untuk memeriksa kondisi ini, NoBot
kontrol memerlukan atribut ini (semuanya opsional):
-
ResponseMinimumDelaySeconds
jumlah detik minimum antara postback -
CutoffWindowSeconds
panjang interval waktu di mana postback dari satu IP adalah pengukuran -
CutoffMaximumInstances
jumlah detik maksimum per interval waktu
Markup berikut menuntut setidaknya dua detik berlalu antara postback dan hanya ada lima postback atau kurang dalam interval 30 detik:
<ajaxToolkit:NoBot ID="nb" runat="server" CutoffMaximumInstances="5"
CutoffWindowSeconds="30" ResponseMinimumDelaySeconds="2" />
Kemudian seperti biasa pastikan untuk menyertakan ScriptManager
di halaman sehingga pustaka AJAX ASP.NET dimuat dan Control Toolkit dapat digunakan:
<asp:ScriptManager ID="asm" runat="server" />
Karena sebagian besar pemeriksaan NoBot
dilakukan terjadi di sisi server, Anda perlu memeriksa hasil validasi ini. Ini dapat dilakukan dengan memanggil NoBot
IsValid()
metode . Ini memiliki satu argumen (sebagai out
parameter/ByRef
parameter) yang berjenis NoBotState
. Representasi stringnya berisi alasan ketika pemeriksaan gagal dan Valid
sebaliknya. Kode berikut menghasilkan pesan sesuai dengan NoBot
hasil:
<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>
Terakhir, Anda memerlukan formulir untuk mengirimkan dan elemen label untuk menghasilkan pesan, dan Anda selesai!
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" />
Saat Anda menjalankan skrip ini dan menonaktifkan JavaScript atau mengirimkan formulir dalam dua detik pertama atau mengirimkan formulir tujuh kali dalam waktu tiga puluh detik, Anda akan mendapatkan pesan kesalahan. Namun gunakan kontrol ini dengan bijak, karena hanya sekitar 90-95% pengguna mengaktifkan JavaScript, oleh karena itu 5-10% pengguna akan gagal NoBot
uji.
Pesan kesalahan ini bisa disebabkan oleh bot (Klik untuk melihat gambar ukuran penuh)