Çarşamba, 23 Mayıs 2018
Php ile HMAC güvenli şifreleme nasıl yapılır
Eğitim

Php ile HMAC güvenli şifreleme nasıl yapılır

Doruk Karaboncuk Doruk Karaboncuk
02 Şubat 2017

Php ile şifreleme genel olarak üyelik aldığımız sistemlerde kullanıcıların şifrelerini şifreleyerek almamızda kullanılır.

Nerelerde kullanıldığına bakalım

Bir üyelik sistemi yaptığımızda müşterilerin şifrelerini bilmenize hem etik olarak hem de ihtiyaç olarak gerek yoktur. Bu yüzden aldığımız şifreleri şifreleyerek veritabanına kaydederiz. Bu tür şifrelemelerin geri dönüşü yoktur ve kırılamaz. Artık MD5'te çok güvenli olmadığı için bu yazıda güvenli şifreleme nasıl yapılır anlatacağım. 

Aşağıda bulunan şifreleme yöntemi söylediğim gibi geri dönüştürülemez. Geri dönüştürülebilir şifrelemeyi farklı bir yazıda anlatacağım.

Öncelikle .ini dosyamızı oluşturalım

İçerisinde gizli şifreleme kodumuzu saklayacağımız .ini dosyamızı, dosyaları koyduğumuz klasörün bir üst klasörüne config klasörü içine yerleştirelim. Dosyalarınızı koyduğunuz klasörler genellikle public_html veya httpdocs olacaktır. Bunların da bir üst klasörüne yerleştirelim ki dışarıdan bu dosyaya ulaşılamasın. 

Klasöre config adını verip, .ini dosyamıza da hash adını verelim.

hash.ini dosyamız

[section]
hashkey = !krm*fsZ-Xs1Kdk%9

Dosyamızın içerisindeki karışık kodu kendinize göre değiştirebilirsiniz. Şifreleme işlemine başladıktan sonra değiştirirseniz kontrol ettiğiniz bilgiler uyuşmayacaktır.

Artık şifreleme yapacağımız fonksiyonumuza geçebiliriz.

HMAC ile şifreleme fonksiyonumuz

<?php

// Şifreleme Fonksiyonumuz 

function kilitle($decrypted)
{
    $kokdizin = $_SERVER['DOCUMENT_ROOT'];
    $cikartdizin = str_replace('public_html','',str_replace('private_html','',$kokdizin));
    $ekleson = $cikartdizin.'config/hash.ini';
    $anahtar = parse_ini_file($ekleson);
    $benzersiz = $anahtar['hashkey'];
    $sifrele = hash_hmac("sha256", $decrypted, $benzersiz);
    return $sifrele;
}

?>

Artık fonksiyonumuzu oluşturduk ve kullanıma hazır. 

Bir kullanıcı kayıt olduğunda aldığınız şifreyi şifreletiriniz ve veritabanına o şekilde kaydedersiniz.

Kullanıcının şifresi "abc" olsa bile veritabanında "bd7e46e8b65512bbsza2ce701fbe59c515574de326e21697b2459f1807397ec1b" gibi bir şekilde gözükecektir. Herhangi biri veritabanınıza sızarsa eğer kullanıcılarınızın şifreleri güvende olacaktır. 

Kullanıcıya giriş yaptırıken de şu şekilde bilgilerini kontrol ettirebilirsiniz.

Kullanıcı şifrelerini şifreleme

<?php

//Formdan gelen şifreyi alalım
$gelenEmail = mysql_real_escape_string($_POST['email']);
$gelenSifre = mysql_real_escape_string($_POST['sifre']);
$sifrelenmis = kilitle($gelensifre);

//Artık şifrelenmiş şekilde veritabanınıza bakabilirsiniz.

$girisKontrol = "Select * from uyeler WHERE uye_email = '".$gelenEmail."'  and uye_sifre = '".$sifrelenmis."' ";

//Bu dizeyi çalıştırdığınızda gelen değer doğru ise kullanıcıya giriş yaptırtabilirsiniz.


?>

Emoji ile Tepki Ver

1
0
2
0
0
0

Yorumlar

Registration Login
Sign in with social account
or
Lost your Password?
Registration Login
Sign in with social account
or
A password will be send on your post
Registration Login
Registration