Cegah bot jahat agar tidak mengirim spam


15

Saya ingat sebuah situs ditutup karena penyalahgunaan dan saya ingin tahu apakah bot memiliki bagian darinya. Jika bot mem-POSTkan sesuatu ke situs saya apa sajakah cara saya dapat memeranginya? Saya sedang berpikir untuk mengatur beberapa cookie dan meminta cookie diubah melalui JavaScript + timestamp dan sign (jadi cookie kemarin tidak dapat digunakan hari ini dan minggu depan).

Saya yakin kebanyakan orang / bot hanya menggunakan situs lain daripada mengaktifkan JavaScript di bot mereka.

Apa lagi yang bisa saya lakukan? Saya sedang memikirkan batas POST harian dan honeypot untuk bot generik yang baru saja mengirim spam secara acak.

Jawaban:


13

Anda dapat melakukan beberapa hal termasuk:

  1. Menempatkan bidang palsu yang hanya akan dilihat bot. Kemudian jika bidang itu dikirimkan dengan sisa formulir, Anda dapat mengabaikannya (dan melarangnya jika diinginkan). Anda juga dapat menjebak bot jahat yang mengikuti tautan tersembunyi .

  2. Gunakan CAPTCHA seperti reCAPTCHA

  3. Gunakan bidang yang mengharuskan pengguna untuk menjawab pertanyaan seperti apa itu 5 + 3. Setiap manusia bisa menjawabnya tetapi bot tidak akan tahu apa yang harus dilakukan karena itu adalah bidang yang diisi secara otomatis berdasarkan nama bidang. Sehingga bidang itu akan salah atau hilang dalam hal pengajuan akan ditolak.

  4. Gunakan token dan masukkan ke dalam sesi dan tambahkan juga ke formulir. Jika token tidak dikirimkan dengan formulir atau tidak cocok maka itu otomatis dan dapat diabaikan.

  5. Cari pengiriman berulang dari alamat IP yang sama. Jika formulir Anda seharusnya tidak mendapatkan terlalu banyak permintaan tetapi tiba-tiba itu mungkin sedang terkena bot dan Anda harus mempertimbangkan untuk sementara memblokir alamat IP.

  6. Gunakan Askimet . Ini sangat bagus dalam mengidentifikasi spam.


5
+1 - Dan, idealnya, Anda akan menerapkan kombinasi saran yang tercantum di atas dengan cara yang ramah pengguna (misalnya, jika pengguna menonaktifkan Javascript dan karena itu gagal otentikasi berbasis Javascript, berikan pengguna dengan CAPTCHA)
danlefree

6

John Conde menguraikan banyak hal baik yang didekati. Masalah dengan memilih teknik anti-bot / anti-spam adalah menyeimbangkan efektivitas dan kenyamanan. Akan sangat merepotkan jika harus mengisi CAPTCHA setiap kali Anda ingin memposting komentar atau pesan, tetapi jika Anda hanya memerlukan CAPTCHA saat mendaftar, maka kadang-kadang itu tidak menghalangi spammer.

Beberapa teknik pasif adalah alternatif yang baik, karena mereka tidak memerlukan tindakan manusia. Masalahnya adalah bahwa bot menjadi semakin canggih, dan jika bot dapat menyelesaikan CAPTCHA, maka mereka dapat memproses JS dan CSS. Jadi, Anda perlu melatih sedikit kecerdikan, seperti menggunakan CSS yang tidak terlalu jelas untuk menyembunyikan bidang bot-trap Anda.

Tetapi berdasarkan pertanyaan Anda, saya pikir Anda mungkin menyadari bahwa intinya bukan untuk membuat situs bot-proof, tetapi hanya untuk membuat cukup pencegah bahwa pengguna bot hanya akan memilih target yang lebih mudah lainnya. Jadi yang diperlukan di sini akan bervariasi dari satu situs ke situs lainnya, dan kemungkinan akan memerlukan beberapa uji coba dan kesalahan. Saya akan mencoba teknik yang paling tidak mengganggu terlebih dahulu.

Terakhir, cara lain Anda bisa menghapus spam situs Anda adalah dengan menggunakan moderasi rekan untuk menghapus komentar yang dikirimkan bot atau spam yang dikirimkan secara manual yang lolos.


dapatkah Anda menjelaskan ide moderasi teman sebaya? Apakah itu melibatkan pengguna normal yang mendapatkan hak moderator atau bagaimana saya harus membayangkannya?
0xC0000022L

@STATUS_ACCESS_DENIED: maaf atas jawaban yang terlambat, tetapi rekan moderasi pada dasarnya adalah sesuatu seperti digg, slashdot, stackexchange, dll. Di mana pengguna dapat memoderasi konten di situs dengan memberikan beberapa bentuk umpan balik positif atau negatif. Jadi, Anda dapat mengotomatiskan sistem sehingga, ketika cukup banyak pengguna memberikan umpan balik negatif pada sepotong konten, itu secara otomatis disembunyikan atau ditandai untuk ditinjau. Di situs-situs seperti StackExchange, pengguna juga dapat menandai komentar / jawaban sebagai spam, membawanya ke perhatian admin. Ini mengurangi pekerjaan yang harus dibayar admin.
Lèse majesté

Terima kasih. Ini, tentu saja, hanya akan berfungsi pada situs dengan lalu lintas tinggi di mana cukup banyak pengguna dapat diganggu untuk memberikan umpan balik;)
0xC0000022L

1

Seperti John Conde disebutkan dalam # 1) dan Anda sebutkan, honeypot dapat bekerja dengan sangat baik untuk sebagian besar kasus dan sebagian besar situs web. Jika itu dilakukan oleh bot Anda hanya bisa melakukan salah satu metode lain yang disebutkan John juga. Tetapi jujur ​​jika situs Anda rendah atau lalu lintas rata-rata ini harus melakukan trik.

Contoh, salah satu favorit saya:

<form action="/process-form">
<input name="email" placeholder="Enter Your Email">
<input name="email_address" placeholder="Enter Your Email" style="display:none;">
<input type="submit" value="Submit"></form>

Sekarang ketika formulir dikirimkan, persentase bot yang sangat tinggi akan mengisi "email" dan "email_address" tetapi manusia hanya akan mengisi yang mereka lihat, "email" dan bukan "email_address". Jadi dalam kode `/ proses-form 'Anda, Anda hanya perlu memeriksa apakah email_address kosong (tidak) untuk verifikasi.

Sederhana dan efektif.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.