Bagikan melalui


Bot Pertempuran (VB)

oleh Christian Wenz

Unduh PDF

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 NoBotIsValid() 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 NoBothasil:

<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 NoBotuji.

Pesan kesalahan ini bisa disebabkan oleh bot

Pesan kesalahan ini bisa disebabkan oleh bot (Klik untuk melihat gambar ukuran penuh)