Captcha'yı kullanmadan comment spam engelleme [kapalı]

18 Cevap php

Benim yorum spam engelleme için olmayan bazı captcha yöntemleri nelerdir?

18 Cevap

Kadar dışında 0 piksel boyutunu ve mutlak konumlandırma ayar gizli: Benim durumumda şu anda en etkili yöntemler honeypot input fields Bu CSS (iyi kullanımı gibi görünürlük gibi farklı yöntemler ile kullanıcılara görünmez hale vardır tarayıcı penceresi); onlar zaten dolu eğer bunu bir spambot varsayabiliriz.

This blog I (şimdiye kadar% 100 başarı ile) kendimi denedim oldukça karmaşık bir yöntemi anlatmaktadır, ama karma alan adları ile tüm şeyler atlayarak aynı sonucu almak ve sadece ekleyebilirsiniz şüpheli bazı basit bal küpü alanlar.

1) Adding session-related information into the form Örnek:

<input type="hidden" name="sh" value="<?php echo dechex(crc32(session_id())); ?>" />

Daha sonra geri gönderme de, oturum geçerli olup olmadığını kontrol edin.

2) Javascript-only. Submission at Javascript enjeksiyon kullanın. Örnek:

<input type="hidden" id="txtKey" name="key" value="" />
<input type="submit" value="Go" onclick="document.getElementById('txtKey').value = '<?php echo dechex(crc32(session_id())) ?>';" />

3) Time-limit per IP, User or Session. Bu oldukça basittir.

4) alan adlarını rastlantısallaşmanın:

<?php
   $fieldkey = dechex(crc32(mt_rand().dechex(crc32(time()))));
   $_SESSION['fieldkey'] = $fieldkey;
?>
<input type="text" name="name<?php echo $fieldkey; ?>" value="" />
<input type="text" name="address<?php echo $fieldkey; ?>" value="" />

Sonra sunucu tarafında bitti kontrol edebilirsiniz.

Akismet bir API vardır. Birisi bunun için bir sarıcı sınıf (BSD liscense) üzerinden yazdı: http://cesars.users.phpclasses.org/browse/package/4401.html

There's also a Bayesian filter class (BSD Liscense as well) http://cesars.users.phpclasses.org/browse/package/4236.html

Honey Pot Teorisi yanı yoktur. Ben iyi sonuçlar spam azaltma diğer formları ile bal tencere bağlanması keyfini çıkarın.

http://www.projecthoneypot.org/

Başka bir ortak yaklaşım kullanıcıya basit bir soru ("sıcak veya soğuk ateş mi?" "2 artı 7 nedir?" Vb) vermektir. Biraz CAPTCHA-like, ama ekran okuyucusu kullanan görme engelli kullanıcılar için daha erişilebilir. Ben WordPress bloglarda çok sık görüyorum, çünkü, bunu yapan bir WordPress eklentisi olması gerekir düşünüyorum.

Bu captcha'yı kullanmadan Spam bot ya da kaba kuvvet saldırısını engelleme basit bir hile.

Lütfen formda bu koyun:

<input type="hidden" name="hash" value="<?php echo md5($secret_key.time()).','.time(); ?>" />

Php kodu koy

$human_typing_time = 5;/** page load (1s) + submit (1s) + typing time (3s) */
$vars = explode(',', $_POST['hash']);
if(md5($secret_key.$vars[1]) != $vars[0] || time() < $var[1] + $human_typing_time){
    //bot?
    exit();
} 

Eğer $ human_typing_time artırabilir veya azaltabilirsiniz formunun ağırlığına bağlıdır.

Sblam! Akismet benzer bir açık kaynak süzgeci.

Bu, naif bayesian filtreleme kullanan çoklu dağıtılan kara listelerine gönderenin IP ve bağlantıları denetler, HTTP isteklerinin doğruluğunu kontrol eder, ve bir ipucu (ama değil gereklilik) olarak JS varlığını kullanır.

Düzenli CAPTCHA'ları şimdi çözülebilir spam bot vardır.

"text CAPTCHAs" yerine düşünün: "? + 1 1 neler" bir mantık ya da ortak bilgi soru, gibi ya da "General Custard beyaz atı ne renk?" Soru bile statik (her deneme için aynı soru) olabilir.

Text Mantık CAPTCHA

(Taken from http://matthewhutchinson.net/2010/4/21/actsastextcaptcha)

Ben Jeff Atwood bile kendi blogunda böyle bir doğrulama kullanır düşünüyorum. (Yanılıyorsam beni düzeltin)

Bazı kaynaklar:

Sen Akismet gibi bir üçüncü taraf kullanarak bakarak deneyebilirsiniz. API anahtarları kişisel kullanım için ücretsizdir. Ayrıca, Zend Framework bunun için bir package vardır.

Çoğu botlar sadece tüm formu doldurun ve size gönderir. Çalışan basit bir hile genellikle javascript yardımıyla gizlemek normal bir alan yaratmaktır. Sunucu tarafında sadece bu doldurmak olup olmadığını kontrol edin. Öyleyse - o zaman kesin spam.

As lot of people already proposed : use a honey pot input field. But there are two other things you need to do. First, randomize the name / id of which input field is the honey pot. Store the state of usefull fields in session (as well as a form token, used against CSRF attacks). For exampe, you have these fields to get : name, email, message. In your form, you will have "token" which is your token, "jzefkl46" which is name for this form, "ofdizhae" for email, "45sd4s2" for message and "fgdfg5qsd4" for honey pot. In the user session, you can have something like

array("forms" => array("your-token-value" => array("jzefkl46" => "name",
                                                   "ofdizhae" => "email",
                                                   "45sd4s2" => "message",
                                                   "fgdfg5qsd4" => honey"));

Siz sadece sizin form verilerini almak zaman geri yeniden ilişkilendirmek gerekir.

İkinci şey, robot bal pot alanı (% 25 ihtimalle) önlemek için şansını çok şey var gibi, tencere sayısını çarpın. Senin html çok fazla yükü olmaması ise 10 veya 20 tanesi ile, botlara zorluk ekleyin.

Ben aşağıdaki gibi basit bir matematiksel soru ile benim web spam yaklaşık% 99 azalttı:

2 +4 [TextBox] nedir

Kullanıcının, "6" eğer cevap soru / yorum göndermek mümkün olacak.

Bana ve benzeri çözüm için Works Korku Kodlama Jeff Atwood için çalışıyor!

ATLBL algılayabilir ve muharebe yorum spam için kullanabileceğiniz http://www.atlbl.com bir API var.

Blog sayfamda, ben uzlaşma captcha bir tür var: sonrası bir bağlantı içeriyorsa, ben sadece bir captcha kullanın. Ben de bir bal küpü giriş alanını kullanın. Şimdiye kadar, bu nearly% 100 etkili olmuştur. Her şimdi ve sonra hiçbir bağlantıları ("güzel bir site!" Gibi genellikle bir şey) içeren her forma için bir şey gönderen bir spam olacaktır. Ben sadece bu insanlar onlar (sadece görüyorum e-posta adresini kullanarak) kim olduğunu bulmak için onlara e-posta düşünüyorum varsayabiliriz.

Bağlantıları izin verme. Bağlantıları olmadan, spam faydasız olduğunu.

[EDIT], bir orta yol olarak, sadece bağlantıları "iyi" siteler (genellikle kendi) için izin verir. Orada bunlardan sadece bir avuç vardır, böylece kullanıcıların isteği onları eklemek veya bağlantıyı doğrulanmadı kadar açıklamayı tutabilir ya. İyi olduğu zaman, bunu ekleyin.

Bir süre sonra, bu kapatın ve otomatik olarak bağlantıya ile yorumlarını reddetmek ve kullanıcıların şikayet için sabırsızlanıyorum.

bal pot alanları kullanarak birlikte, biz orada otomatik IP yasaklama (Dinamik IP'ler için işe yaramaz olan) ve botlar tarafından geri gönderildi özellikle herhangi bir bağlantıları olabilir.

örnekler ve fikirler için bazı wp antispam eklentileri çıkış

captcha'yı kullanmadan çok güzel bir antispam oradayız.

some i'd recommend: hashcash, nospamnx, typepad antispam. all these using different methods blocking spam and i use them all. hashcash+nospamnx block almost all spambot. and typepad antispam block most human typed spam.

Bu da iyi olanları şunlardır: spambam, wp-SpamFree, anti-captcha kötü davranış, httpbl, vb

Ayrıca kendi sitesinden gelmiyor herhangi bir bot doğrudan POST engellemek basit. Htaccess ile (referer kontrol edin)

ya da, sadece Disqus için yorum sistemi fason ve uyuyun.