Kullanıcıyı rahatsız etmeden bir PHP sitede spam engelleme

4 Cevap php

Ben şu anda bir hafta içinde tartakladığı biraz sohbet / forum sitesinde çalışıyorum ve anonim girdileri vardır (örn: Hiçbir kullanıcı adlarını ve şifrelerini). Bu berbat bir spam için kolay bir pasta olabilir, ama ben captcha'lar veya benzer anti-spam girişleri ile kullanıcıyı rahatsız etmek istemiyorum gibi bu görünüyor.

Bu herhangi bir görünmez-to-kullanıcıya alternatifler var mı? Yardımlarınız için teşekkürler.

4 Cevap

Eğer spam hakkında bilmeniz gereken bir şey, her zaman düşük meyveler için gidin. Hackerlar ile aynı. Bu ben de en çok kullanıcıları etkileyecek hedefleri vurmak için kolay seçeceğiz demek. PHP ve Windows güvenlik açıkları sık sık istismar nedeni budur: Onlar böyle bir zayıflık bulmak / hedef "pazar" büyük istismar o kadar çok kullanıcıları etkiler.

Ayrıca, Linux ve Mac işletim sistemleri, örneğin virüsler nispeten yarasız kalır neden nedeni büyük bir parçası: hedef pazar Windows daha much küçüktür. Şimdi Mac / Linux ile Windows'un güvenlik ve sağlamlık denk değilim ama son iki güvenlik modeli çok daha iyi olsa bile, eski yönelik saldırıların sayısı hala sahip eksiklikleri ile orantısız.

Bu tür problemleri önlemek için en iyi yollarından biri popüler softare kullanmak değildir çünkü ben söylüyorum. Örneğin phpBB bu kadar popüler sırf buna karşı yapılan saldırıların çok olmuştur.

Yani popüler alan test şey yok olmayan bir sistemi var ama aynı zamanda yararlanabilmesi için en önemsiz zaman değer olmadığı bir avantajı var çünkü bir dezavantaj konum kendi sohbet / forum sistemini yaparak o. Peki ne için dikkat etmeniz gereken otomasyon sistemleri size karşı ne yapabilirim. Web sitelerindeki iletişim formları (isim, e-posta ve yorum alanları gibi) tanınabilir işaretleri var eğilimindedir.

Ben tavsiye ediyorum:

  • Içinde gelir almamak tepkiler kullanıcıya formu gönderme 5-10 saniye demek;
  • Bir bal küpü (başka yerlerde açıklandığı gibi CSS / JS gizli alanlar) kullanılarak;
  • Javascript kullanarak nerede, işlemek formunu yeniden düzenlemek ya da görüntülemek için geçerli;
  • Öngörülebilir olmayan bir şekilde alan adlarını kullanarak; ve
  • IP tarafından kötü yanıtları basıyorsunuz.

Bu benim için zaman% 100 çalıştı:

<input type="text" style="display:none" name="email" value="do not fill this in it is for spam catching" />

Daha sonra sunucu tarafı (PHP):

if($_POST['email'] != 'do not fill this in it is for spam catching') {
    // spam
}

Daha önce belirtildiği gibi, çoğu botlar, içinde "e-posta" adlı özellikle girişleri her şeyi doldurmak.

Capchas fikri, insanların geçmesi için çok kolay ama önlemek vb botlar için çok zorlanılan olmasıdır. Sitenize yayınlamaktan bu spam botlara-tutacak ne çözüm bu tür istemiyorsanız?

Bilgisayarınızın güvende olmak istiyorum ama bir antivirüs ve güvenlik duvarı kullanmak istemiyorum gibi.

Ben (sadece Kayit Ol! Geçmek, giriş gerekmez) onlara Capcha göstermek sitenizi ve onlar bir şey göndermek istediğiniz ilk defa giren her kullanıcı için bir oturum oluşturmak düşünüyorum. Onlar başarılı olursa sadece insan olduklarını oturumda bir bayrak saklayın. Sürece onlar gibi kendi tarayıcı onlar gönderebilir ve ne istediklerini sitenizde cevap olabilir açıldı. Botlar olası bu ilk testi geçecek.

Anti-spam koruması iki sınıf vardır.

İlk zor otomatik botlar sitenizdeki veri yanılmak için yapmaktır. Gizli form alanı yöntem sık sık bu sözü için, ve düşük trafik siteler için uygundur. Bu korumalar trivially siteniz için yazılmış bir spam bot tarafından mağlup edilebilir. Eğer hedef çok küçük iseniz Ancak, bu olmayacak.

İkinci "rahatsız edici" türleri. Bu genellikle bir captcha, kayıt, ya da yazılan e-posta onayı gerektirir. Bu daha az rahatsız edici yapmak için birkaç yaklaşım kullanmak, ancak spam göndermek için bot tarafında çok daha fazla çaba gerektirir.

Bu yaklaşımların her ikisi de genellikle özürlü ve mobil kullanıcıları engelleyebilir unutmayın.