Resim ve benzeri korumalardan sıkıldıysanız ya da daha basit birşey arıyorsanız
aşağıdakiler işinize yarayabilir.
<?php
$x = rand(1,9); $y = rand(1,9); //x ve y adlı değişkenlere 1 ile 9 arasında 2 sayı yükledik.
echo" <input type=\"hidden\" name=\"x\" value=\"$x\">
<input type=\"hidden\" name=\"y\" value=\"$y\"> "; // sayıları inputlara verdik.
echo" $x+$y= <input name=\"cevap\" value=\"?\" size=\"1\" maxlength=\"2\">
"; // kullanıcıya cevabı sorduk.
?>
Formumuza yukarıdaki kodları ekliyoruz.
formu gönderdiğimiz sayfaya veya bölüme ise aşağıdakileri ekliyoruz.
<?php
$z=$x+$y;
if ($z == '$cevap') { echo"Cevap doğrudur"; }
else { echo"Dön geri";}
?>
Bu güvenlik önlemini aşmak bir bot için hiç de zor değil fakat
resimli captchalarda artık rahatlıkla aşılıyor.. Sanırım en iyisi yeni yeni türeyen şıklı testler..
Matematik işlemli basit captcha kodu
7
●3.154
- 08-04-2009, 01:57:47
- 08-04-2009, 10:02:35Üyeliği durduruldudediğin gibi bu cok basit olmu. resimli güvenlik yapmak bundan daha sağlam duruyor.
fakat: x,y yi hidden ile gondermek yerine.
$cevap=$x+$y;
$_SESSION['cevap'] = $cevap;
diye cevabi session a atsan,
kontrol ederken de
if ($_SESSION['cevap'] == '$formdan_gelen_cevap')
şeklinde kontrol edersen daha iyi olur. - 08-04-2009, 10:13:23Üyeliği durduruldugrafiksel numarayı yazın tarzı şeylerin yanında toplama, çarpma gibi işlemini grafiksel olarak göstermek bile yeterli olmuyor. zira o bile aşılıyor görüntü işleme ile karakter tanıma yapılarak.
Bu aralar klasik soru sorarak cevap almak popüler ve soru çeşidi ne kadar çok olursa o kadar verim alınıyor.
Örnek bir soru cevap veritabanı oluşturulursa daha başarılı oluyor.
Mesela ;
Türkiyenin başkenti neresi
tabi güvenlik için soru ve cevabini sessinda tutmak daha faydali. - 08-04-2009, 14:46:08Üyeliği durduruldubu tip cabalarla cok zaman harcamayin bence,
bunlar bir şekilde illaki aşılır;
önemli olan mesele şu,
ayni ipden 50 form doldurulu ise 51.formda guvenlik resmi cikartmak.
yada ayni veriler 20. kez post edildi ise 21. kez resim cikartmak.
bu tip guvenlik zımbırtılari site kullanıcılarını soğutuyor. mumkun oldugunca kullanmamak gerek. - 08-04-2009, 19:26:33Eğer biri sitenize kasti saldırı yapacaksa korunmak için 1000 soruluk bir test dbsi oluşturabiliriz, hareketli captchalar, sesli captchalar, okumak için bin takla attığımız enterasan resimler vblerini kullanabiliriz. Ama sırf piyasada dolaşan botların rastgele post kasmasını engellemek istiyorsak matematiksel işlem işimizi görebilir. Bunun haricinde ip ve çerez kontrolü ilede bunu güçlendirebiliriz elbette.
- 08-04-2009, 23:51:58Sayfa başına
session_start();
fonksiyonumumuzu yazalım,
$RastgeleSayi1 = rand(0,9); $RastgeleSayi2 = rand(0,9); $_SESSION['melihguv1'] = $RastgeleSayi1; $_SESSION['melihguv2'] = $RastgeleSayi2; //formumuzda işlemi gerçekleştirelim echo ' <label>(Spam Koruma)</label> '.$_SESSION['melihguv1'].'+'.$_SESSION['melihguv2'].' = <input name="spamkoruma" type="text" maxlength="2" size="2"><br> '; //post ettiğimiz sayfa da işlemi hesaplayalım $sk=$_POST['spamkoruma']; $sk1 = $_SESSION['melihguv1']; $sk2 = $_SESSION['melihguv2']; $skToplam = $sk1+$sk2; if(empty($sk)){ $hata .='<font color="red"><b>HATA!</b> </font>Spam Koruma İşlemi Boş.<br>'; } if($skToplam != $sk ){ $hata .='<font color="red"><b>HATA!</b> </font>Spam Koruma İşlemi Yanlış.<br>'; } //hata yoksa if(!isset($hata)){ //kodlarınız session_destroy(); //ya da oturumla ilgili başka işlemleriniz varsa kaybolmaması için unset($_SESSION['melihguv2']); unset($_SESSION['melihguv1']); }Basitçe bu şekilde olabilir..
