GD ve Güvenlik Kodu Oluşturma

Mesaj Önizleme 
 
Konuyu Değerlendir
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
GD ve Güvenlik Kodu Oluşturma
Yazar Mesaj
SoniQuake Uzakta
Forum Yöneticisi
*******

Mesajlar: 6,936
Katılım: 04-11-2007
Karma Puanı: 67
Madalyalarım :
Site SahibiAltın MadalyaGümüş MadalyaGümüş MadalyaAktif Üye Ödülü
Mesaj: #1
GD ve Güvenlik Kodu Oluşturma
Signup, login vs. gibi kullanıcıdan form aracılığıyla bilgi girmesini beklediğimiz uygulamalarda,
post (veya get) edilen datayı, gerçekten kullanıcınınmı(insan) yoksa iyi niyetli olmayan bir
programınmı gönderdiğini anlamamız gerekebilir. Bu noktada insanın algı mekanizmasını kullanıp,
kötü niyetli programın resim olarak algıladığı, ama insanın resimdeki şekilleri harf ve rakam
olarak algıladığı bir atlatmaca kullanırız. İçinde harfler ve rakamlardan oluşan text bulunan bir
resim bu atlatmacayı kolayca yapacaktır. Ancak bazı OCR uygulamaları image dosyası içindeki
şekilleri ascii karakterlere çevirebilmektedir. OCR programları kitap harfleri ve bilinen
fontlardaki düzgün şekilleri ascii ye çevirebilmektedirler. Bunun için resmimizdeki texti biraz
okunması zor hale getirmek yeterli olacaktır. Hele yazı için yamuk bir font kullanırsak ocr nin işi
çok zorlaşacaktır.

PHP Kodu:
<form name=formlogin method=post action="dologin.php">
 
Kullanıcı Adı 
 <
input name=user_title><br>
 
Kullanıcı Şifre
 <
input type=password name=user_pass><br>
 
Güvenlik Kodu:
 <
input name=security_code><br>
 <
img src="s_code.php" width="144" height="32" border="0">
 </
form

Yukarıdaki basit login formuna s_code.php ile image dosyası hazırlayalım;

PHP Kodu:
<?
 
// s_code.php dosyamızın .png olarak algılanabilmesi için header
 
header("content-type: image/png");
 
session_start();
  
 
// hafızada boş bir image oluşturalım
 
$im imagecreate(14432);
  
 
// resmimizin arka plan rengi için beyaz, yazı rengi için siyah renklerini oluşturalım;
 
$byz imagecolorallocate($im255255255);
 
$syh imagecolorallocate($im000);
  
 
// resmimizi beyaza boyayalım. (default siyah oluşur)
 
imagefill($im00$byz);
  
 
// resmimizin arkasına desen yapıyoruz.
 // bunun için 20 adet boyutları ve rengi rastele elips ekleyelim
 
for($i=0;$i<20;$i++) {
 
$e_x rand(0,144);
 
$e_y rand(0,32);
 
$e_genislik rand(3100);
 
$e_yukseklik rand(3100);
 
$e_renk imagecolorallocate($imrand(200,255), rand(200,255), rand(200,255));
 
imagefilledellipse($im$e_x$e_y$e_genislik$e_yukseklik$e_renk);
 }
  
 
// güvenlik için session_id yi hash edip ilk 5 karekterini alalım
 
$kod substr(md5(sha1(session_id())), 05);
  
 
// bu beş karekteri resmin içine yazalım.
 // yazarken bu dosyanın yanına koyacağımız
 // True Type bir fontu kullanabiliriz.
 // Burdaki 16 = font boyutu, 10 = açısı, 30 = x ve 22 = y 
 
imagettftext($im161030 32$syh'ace.ttf'$kod);
  
 
// oluşan image i gösterelim
 
imagepng($im);
  
 
//hafızadaki resmi silebiliriz
 
imagedestroy($im);
 
?>
26-10-2008 8:18
Bu kullanıcının gönderdiği tüm mesajları bul Bu mesajı bir cevapta alıntı yap
Mesaj Önizleme 


Benzer Konular...
Konu: Yazar Cevaplar: Gösterim: Son Mesaj
  PHP Kodu Renklendirme SoniQuake 0 75 26-10-2008 8:14
Son Mesaj: SoniQuake

Foruma Git: