Eyl 06
Bazen parolaları md5 lemeden veritabanında tutmak zorunda kalırız. Bu tür durumlarda hem sql injectionları engellemeye hem de mysql’in md5 kullanımına örnek vermek için aşağıdaki fonksiyonu yazdım.
<?php
function baglan($ka,$pa){
$k=md5($ka);
$p=md5($pa);
$baglan = mysql_connect(”localhost”,”root”,”");
if (!$baglan) { die(’Baglanti Kurulamadı: ‘ . mysql_error());}
mysql_select_db(”veritabani”, $baglan);
$yonetici = mysql_query(”SELECT * FROM tablo where MD5(kullaniciadi)=’$k’ and MD5(parola)=’$p’”);
while($row = mysql_fetch_array($yonetici))
{
$kullaniciadi=$row[’kullaniciadi’];
echo $kullaniciadi;
$parola=$row[’parola’];
echo $parola;
}
}
echo baglan(’altan’,'12345′);
?>

Eylül 9th, 2007 at 1:49
aslında veritabanında direkt olarak paraloların md5 ile şifrelenmiş hali tutulur yani böylece siz admin olsanızda birinin şifresini göremezsiniz. Bu güzeldir çünkü kullanıcı aynı şifreyi tüm diğer hesaplarında da kullanıyor olabilir. Bu sayede diğer hesap şifrelerini öğrenmeniz söz konusu olamaz.
Bir de altan, hata vermez ama echo baglan(’altan’,’12345′); derken “echo” kullanmaman gerekmiyor mu baglan()dan zaten bir string dönmüyor ve fonksyionun içinde yazdırılıo herşey.
Eylül 9th, 2007 at 12:44
echo konusunda haklısın
fazladan yazmışım. aslında function içinde de echo yaptırmam, ama döngü içerisinde rowları değişkenlere sabitlemek alışkanlık olmuş
md5 konusunda da açıklama yazının başında: “zorunda kalırız”.
Mart 26th, 2008 at 21:32
Aslında bütün verileri mysql_escape_string / mysql_real_escape_string yerine MD5′lesek enterprise levelda ultra güvenli secure layerların başını çekecek methodlar geliştirebiliriz zannımca.
Ayrıca ufacık performans düşüşleri de bizleri cluster teknolojisi konusunda birar guru ve bilinçli donanım yatırımcıları haline getirebilir.
Faydalarının bununla da biteceğini zannetmem hatta.