CAPTCHA ve reCAPTCHA Nedir? Sitenize nasıl eklersiniz? // Detaylı Anlatım

ENİGMA1

Uzman üye
31 Ocak 2016
1,961
2
39
BzI6Ra.png


Merhaba,

Bu yazıda, çoğu zaman canınızı sıkan keşke olmasa dediğiniz can sıkıcı insan doğrulama testleri CAPTCHA ve reCAPTCHA adı verilen biraz daha az can sıkıcı kuzenleri hakkında bilmeniz gerekenleri anlatıp kendi sitenize nasıl ekleyebileceğinizi anlatacağım. Önümüzdeki birkaç dakika içinde şunları öğreneceksiniz:​

Konu içeriği
2HWlUR.png
CAPTCHA'lar nedir?
2HWlUR.png
reCAPTCHA'lar nedir
2HWlUR.png
ReCaptcha v2 nasıl kullanılır?
2HWlUR.png
CAPTCHA nasıl oluşturulur?​


1.png

CAPTCHA nedir?

CAPTCHA, web sitelerinin formlar veya aramalar gibi şeylere erişmenize izin vermeden önce sizi çözmeye zorlayabileceği bir test türüdür. CAPTCHA'nın açılımı : "Completely Automated Public Turing test to tell Computers and Humans Apart" dır. Açılımı türkçeye "İnsan ve Bilgisayar Ayrımı Amaçlı Tam Otomatik Genel Turing Testi" şekilde çevirmiş.​

Adından da anlaşılacağı gibi, bu testlerin amacı o an işlem yapan kullanıcının insan mı yoksa makine mi olduğuna karar vermektir. Bu testler, spam gönderenlerin ve bilgisayar korsanlarının otomatik araçlar kullanmasını engellemek için oluşturulmuştur. CAPTCHA'lar bu tür sorunlara karşı bir savunma olarak geliştirilmiştir. CAPTCHA'lar bir insanın tamamlaması için "kolay" fakat bilgisayarın tamamlaması zor bir test oluşturmaktır. Test doğru bir biçimde tamamlandığı takdirde sizin bir insan olduğunuzu varsayar ve işleminizi rahatlıkla gerçekleştirebilirsiniz.​

Yapay zeka teklonojisinin geliştirilmesiyle birlikte CAPTCHA sorularu yapay zekalar tarafından çözülmeye başlandı o yüzden CAPTCHA kullanımının yerini Google'un geliştirdiği ReCAPTCHA teklonojisi aldı.​

1.png

ReCAPTCHA nedir?

reCAPTCHA, Google'un geliştirdiği CAPTCHA'nın gelişmiş sürümüdür. Bu CAPTCHA türü, kullanıcılar ve bir web sitesi arasındaki etkileşimlere risk analizi algoritmaları uygulayarak kullanıcının insan veya yazılım olma olasılığını gösteren bir paun verir. Web sitesi Yöneticisi, oluşturulan puana bakarak kullanıcı tarafından gönderilen verilere ne olacağına karar verir. Bazen bir insan olarak ben bile çözmekte zorlanıyorum :D

1.png

ReCaptcha v2 nasıl kullanılır?

Gereksinimler
2HWlUR.png
HTML hakkında temel bilgiler
2HWlUR.png
PHP ve değişkenleri ve nesneleri nasıl çağrıldığı hakkında düşük düzeyde bilgi
2HWlUR.png
PHP 5.6+ kurulu olan web sitesi veya yerel sunucu (localhost)​



ReCaptcha nasıl site kaydı oluşturulur?

1- ReCaptcha Admin paneline erişmek için bir Google hesabınızın olması gerekir.

2- Vermiş olduğum bağlantıya tıklayıp yeni site kaydı yapmalısınız.

QevEmM.gif


- WAMP veya XAMPP sunucunuzda test etmek için, etiket ve alan adı kutucuklarına localhost yazabilirsiniz.​

3- Site anahtarını ve gizli anahtarı kaydedin , böylece bu anahtarları daha sonra komut dosyasında kullanabilirsiniz.

4- Web klasörünüzde yeni bir .php dosyası oluşturun.

5- Sonra aşağıdaki kodu php dosyanıza yapıştırabilirsiniz.

Kod:
<?php

class Captcha
{
    private $secret = 'GİZLİ_ANAHTAR'; // Gizli Anahtar
    private $url = 'https://www.google.com/recaptcha/api/siteverify'; // API URL
    public function Check()
    {
        $get = file_get_contents($this->url . '?secret=' . $this->secret . '&response=' . $_POST['g-recaptcha-response']);

        $data = json_decode($get);

        if ($data->success == true)
        {
            return true;
        }
        return false;
    }
}
$captcha = new Captcha();

?>

<html>
<head>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
</head>
<body>

    <form method="POST">
        <div class="g-recaptcha" data-sitekey="SITE_ANAHTARI"></div> <!-- //Site anahtarı//-->
        <input type="submit" name="submit" value="Submit" />
    </form>

<?php if (isset($_POST['submit'])): ?>
    <?php if ($captcha->Check()): ?>

            Tebrikler, işe yaradı!

        <?php else: ?>

            Captcha yanlış veya doğru ayarlanmadı!

    <?php endif; ?>
<?php endif; ?>


</body>
</html>

6- Koda'da SITE_ANAHTARI ve GİZLİ_ANAHTAR yazan yerleri size verilen anahtarlar ile değiştirin.

7- Ve oluşturduğunuz php dosyasını apache sunucunuzda açarak test edin.​

8hRF2O.gif

1.png

CAPTCHA nasıl oluşturulur?

1- captcha.php ve kontrol.php adında php dosyaları oluşturun.

2- captcha.php dosyasına aşağıdaki kodu yapıştırın.

Kod:
<?php

	session_start();
	$kod = substr(md5(uniqid(rand(0, 6))), 0, 6);
	$_SESSION['kod'] = $kod;
	header('Content-type: image/png');
	$kod_uzunluk = strlen($kod);
	$genislik = imagefontwidth(5) * $kod_uzunluk;
	$yukseklik = imagefontheight(5);
	$resim = imagecreate($genislik, $yukseklik);
	$arka_renk = imagecolorallocate($resim, 0, 0, 0);
	$yazi_renk = imagecolorallocate($resim, 255, 255, 255);
	imagefill($resim, 0, 0, $arka_renk);
	imagestring($resim, 5, 0, 0, $kod, $yazi_renk);
	imagepng($resim);

?>

3- kontrol.php dosyasına aşağıdaki kodu yapıştırın.

Kod:
<?php

	session_start();
	$kod=$_SESSION['kod'];
	echo "<img src='capcta.php'/>";
	echo "<br/><br/><br/>
	<form action='' method='POST'>
		<input type='text' name='kontrol'/>
		<input type='submit'/>
	</form>
	";

	if($_POST){
		$kntrl=$_POST['kontrol'];
		if($kntrl==$kod){
			echo "Kod doğru";
		}
		else{
			echo "yanlıs kod girdiniz dekrar deneyin";
		}
	}
	else{
		echo "";
	}
	
?>

4- Ve oluşturduğunuz php dosyasını apache sunucunuzda açarak test edin.​

eb79yf.gif

Daha zor CAPTCHA için bunu kullanabilirsiniz. CAPTCHA resimlerinin ve yazılarının rengini değiştirir

Kod:
$arka_renk = imagecolorallocate($resim, rand(0, 255), rand(0, 255), rand(0, 255));
$yazi_renk = imagecolorallocate($resim, rand(0, 255), rand(0, 255), rand(0, 255));

gtOMMk.gif

Üstü çizili sayılar üretmesini istiyorsanız aşağıdaki kodu kullanabilirsiniz.

Kod:
for ($i = 0; $i < 6; $i++) {
	imageline($resim, rand(0, 5) * 10, rand(0, 10), rand(0, 10) * 0, 10, $yazi_renk); //imagefill($resim, 0, 0, $arka_renk); yazısının altına eklemelisiniz !!!!!
}

MvG9WR.gif
 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.