Nasıl spam karşı forum koruyabilirim?

15 Cevap php

Ben zam spam bir günlük doz alır ben usta bir web sitesinde bir forum var. Şu anda spam silmek ve IP engellemek. Ama bu çok iyi çalışmaz. Engellenen IP yılların listesi hızla büyüyor, ama çok forumda spam mesaj sayısıdır.

Forum tamamen benim kendi kodudur. PHP ve MySQL inşa edilmiştir.

Spam durdurma bazı somut yolları nelerdir?

Edit The thing I forgot to mention is that the forum needs to be open for unregistered users to post. Kinda like a blog comment.

15 Cevap

Yazdığım bir ziyaretçi defteri uygulaması, ben spam en önlemek iki özelliklerini hayata:

  • Bir oturumda ilk istek olarak POST izin vermeyin

  • Gönderirken geçerli bir HTTP er (r) bakın iste

Ben çalıştığını bilmek tek yolu, formu göndermeden önce JavaScript kullanmaktır. Örneğin, GET POST yöntemini değiştirmek için. ;) Istek dışı postalardan JavaScript yürütme de berbat. Tabii ki, bu da onlar hakkında bakım eğer ki ... non-JavaScript insanların sitenizi kullanmak mümkün olmayacak anlamına gelir. ;) (Not: I yapmak değil)

Benim durumumda, en iyi kolay savunmalar sadece "standart dışı" bir şey yapıyor geliyor. Eğer sitenizin standart dışı yaparsanız herhangi bir otomatik spam muhtemelen çabaya değer değildir (suç) siteniz için özel olarak kodlanmış olması gerekir ki, bu onu yapar. Spam insan spam geliyor ise, gerçekten bu da meşru posterleri durmayacak yapabileceğiniz bir şey olmadığını unutmayın. Yani, "tüm formu doldurup gönderin itme" - Yani hedefi herhangi bir "standart" mesajları atmak bir çözüm bulmaktır.

Eğer deneyebilirsiniz şeylerin akla gelen birkaç örnek:

  • "Web sitesi" veya "ana" ya da buna benzer bir şey gibi bir spam doldurmak isterim şey gibi geliyor bir adla gizli bir form alanı var. Form alanı dolduran alırsa otomatik olarak bütün şeklinde, hatta görünmez alanları doldurarak bir bot olduğu için, bunun yerine gönderme mesaj atmak.
  • Sen bir "gerçek" captcha'yı kullanmak zorunda değilsiniz, ancak gibi basit bir şey bile "geriye şu kelimeyi girin: " "Bu web sitesinin alan adı nedir?" Ya. Yapmak için bir insan için kolay, ama içeri doldurmak anlamaya oldukça karmaşık bir bot gerektirir

Sen bir captcha kullanabilirsiniz, PHPCaptcha veya Akismet, bir PHP API var gibi, bir spam kontrol hizmeti kullanmak gibi bazı iyi komut vardır.

Sen olmayan bir müdahaleci captcha'yı uygulamak nasıl açıklayan bir çok cevabı vardır ki, this question bakmak isteyebilirsiniz.

Başka bir şey düşünmek büyük spam önlemek için mesajların arasında zaman gerektirir etmektir.

Her zaman "turuncu" bir CAPTCHA içerir.

Spamları botlar ya da insanlar tarafından olabilir - botlar daha fazladır.

Javascript tarafından doldurulan gizli bir alanda koymak botlar, durdurmak için - o içeri doldurmak için sitenize özelleştirilmiş olmayan bir standart, aptal bot başarısız olacak bir 99.5% şans var

Onlar doğru doldurmak için başarısız olursa, onlara JavaScript gerekli ya da bir şeydir bir mesaj vermek ve onlara (captcha veya tescil ile örneğin) başka bir şekilde göndermek için bir fırsat verir. Bu şekilde Spambots olmayan anonim kullanıcılar (çoğunlukla) hala hiçbir sorun ile gönderebilir, ve (sizin belirli bir site için özel edilmemiştir) en Spambots olmaz.

Sadece yanlış pozitif üretecektir, kara listeye IP adreslerini rahatsız veya üçüncü taraf kara liste kullanarak yok. Hemen hemen tüm botlar (bazı) meşru kullanıcıların aynı IP adreslerini kullanabilirsiniz.


Her şey bir bot olarak kabul edilir ile bu alanı doldurarak herkes - Başka bir hile CSS ile görmek zor yapılan bir makul sondaj adı ile bir metin alanına koymaktır.

Gelişmiş çözümleri:

Olmayan standart forma ile şansınızı deneyebilirsiniz:

  • boş kalmalıdır alanların CSS ile gizli
  • yanıltıcı isimler, örneğin ile alanlar <input name=email> not bir e-posta bir şey için.

Dışında yerine Spam hasar, sen kullanılabilirlik ve erişilebilirlik hasar olsun - Benim için CAPTCHA spam vazgeçerek ve onları zaten senin forumuna zarar icar gibi.

Ben şaşırtıcı derecede etkili olduğu tespit ettik bir şey: çok URL'ler içeren yorumlar vermemek (daha fazla, diyelim ki, daha 5). Yapıyor beri, ben sıfır yorum spam yaşadım.

Edit: Yukarıdaki yazı beri, ben sadece bir link ile yinelenen yorum spam yaşadım. Şimdi bazı honeypot fields eklemiş ve şimdi bir kaç ay boyunca hiçbir övmek istenmeyen vardı.

Onların kayıtlı e-posta adresine gönderilen bir e-postaya yanıt kadar herkes sonrası izin vermeyin. Sen forumlar ve e-posta listeleri çok yeni kullanıcının verilen e-posta adresine gönderilen benzersiz bir e-posta adresi veya web url oluşturmak ve e-postaya yanıt ya da kayıt sonuçlandırmak için linke tıklamanız gerekiyor görürsünüz.

Captcha kesinlikle kolay yöntem - bir şey bot-kanıt istiyorsanız KittenAuth deneyin (ben bu sefer pandalar var olsa da)

Eğer yorumlar ve Trackbacks için Captcha sisteminin uygulanması hakkında ne düşünüyorsunuz? Ben comments insanlar gerçekten bir kişi ve bir YİD hayır olduğunu doğrulamak edeceğiz :)

Spam gerçekten bir ekonomi meselesidir beri tek bir cevabı vardır: Bu web üzerine kendi eşyalarını koymak için birine bu değer ne kadar olduğunu. Orada, ancak, bazı çözümler oldukça iyi görünüyor

I want to say that in most time, a CAPTCHA is enough for you to prevent SPAMers. But do use a strong one, like http://www.captcha.net/.

Spamers (ağır trafik siteleri hariç) belirli bir site ile başa çıkmak için çok zaman harcamak istemiyorum unutmayın, bu sitelerin bir sürü AD göndermek için bir araç kullanabilirsiniz. Yani FORMU biraz sıradışı olun, (örneğin, kullanıcıya bir görüntü vermek? = '1 .5 +2.4 'Diyor ve kullanıcılara cevap edelim, bu spam araçları çoğu engeller :) olacak)

Ben (şimdiye kadar)% 100 tutarlılık ile spam durdurmak için yaptığım en kolay şey sunuldu metni doğrulamak için olduğunu. Hatta "a href" ya da olmayan tıklanabilir http ya da www, sonra sadece başka bir yerde spam aktarabilirim kontrol etmek php fonksiyon strstr () kullanın. Ben aslında bir komut dosyası daha sonra kusurlu IP adresini inkar benim. Htaccess dosyasına yazmak var. Orada endişe spam başka tür, ama bağlantılar şimdiye kadar gördüğüm tüm ise emin değilim.