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 Yang 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 atasnya. Idenya adalah bahwa hanya manusia yang dapat membaca huruf pada gambar, sedangkan algoritma OCR akan gagal.
Ada beberapa keuntungan dan kerugian untuk pendekatan ini, tetapi diskusi tentang hal ini berada di luar cakupan tutorial ini. Namun ada kontrol dalam ASP.NET AJAX Control Toolkit yang menyediakan pendekatan serupa: NoBot
. Lebih mudah diatasi daripada CAPTCHA, tetapi sangat mudah digunakan dan tarifnya sangat baik di situs web seperti blog di mana itu 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 minimum detik antara postback -
CutoffWindowSeconds
panjang interval waktu di mana postback dari satu IP adalah pengukuran -
CutoffMaximumInstances
jumlah maksimum detik 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">
void Page_Load()
{
if (Page.IsPostBack)
{
NoBotState state;
if (!nb.IsValid(out state))
{
Label1.Text = "Data refused ("
+ HttpUtility.HtmlEncode(state.ToString()) + ")";
}
else
{
Label1.Text = "Data entered.";
}
}
}
</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 tiga puluh detik, Anda akan mendapatkan pesan kesalahan. Namun gunakan kontrol ini dengan bijaksana, karena hanya sekitar 90-95% pengguna mengaktifkan JavaScript, oleh karena itu 5-10% pengguna akan gagal NoBot
dalam pengujian.
Pesan kesalahan ini bisa disebabkan oleh bot (Klik untuk melihat gambar ukuran penuh)