Bagikan melalui


Bot Tempur (C#)

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 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 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">
 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 NoBotdalam pengujian.

Pesan kesalahan ini bisa saja disebabkan oleh bot

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