Anasayfa

Dersler -> Php -> Php ile Şifreleri korumak için md5 fonksiyonu ve kullanımı

Taglar : şifre güvenliği, md5, php fonksiyonları, metin işlemleri,

Php ile bir metni şifrelememiz gerektiğinde md5 isimli fonksiyonu kullanabiliriz. Md5 tek yönlü şifreleme sağlar yani şifrelediğimiz bir metni geri çeviremeyiz. Sadece kombinasyon demek sureti ile ilgili metni ne olduğu bulunabilir. Md5 fonksiyonunu php manuelden okumak için md5 diye aratarak ilgili fonksiyonun yardım sayfasına gidiyorum. Bu sayfayı açtığımda md5 algoritmasına göre metni şifrelediğini yani md5 algoritmasına göre hesaplama yaptığını ve metin olarak ifademi verdiğimi görüyorum.

php 5.0 dan sonra raw output şeklinde bir parametre eklendiğini görüyorum. md5.php isminde bir sayfa oluşturup içine php taglarını açıp kapadıktan sonra $metin = "123456" şeklinde bir ifade tanımlayalım daha sonra echo md5($metin) diyerek bu mevcut kelimemize md5 algoritmasını uygulamış olalım

Özellikle veritabanında tuttuğumuz bilginin eşit olup olmadığını kontrol ediyorsak ve kişilerin buna eriştiğinde ne olduğunu çözememesini istiyorsak md5 fonksiyonu işimizi görebilir.

<?php
$metin = "123456";
echo md5($metin);
?>

Evet 12345 sayısını  md5 fonksiyonuna tabi tuttuğumuzda bu şekilde bir ifade elimize geçti. Sayfayı tekrar yenilesekte sonuç değişmez Yani 123456 için ifadenin md5 dönüşmüş halinin bu olduğunu söyleyebiliriz.

md5 hali bu halde olduğuna göre formdan kişinin post ile şifresini gönderdiğini düşünelim Biz ilk başta md5 fonksiyonunu uygular ve bulduğumuz metni veritabanına kaydederiz. Artık veritabanımızda şu metin mevcut. Daha sonra tekrar giriş yapmak için şifresini yazdığında şöyle bir kontrol yapısı uygulamamız gerekir;

<?php
$_POST["sifre"] = "123";
$md5 = '202cb962ac59075b964b07152d234b70';
if(md5($_POST["sifre"]) == $md5){
    echo 'sifre dogru';
}
?>

md5 post şifre. $md5 değişkeni bu veritabanından okuduğumuz metin ifade olacak tabiki şifre doğrudur.

Ve sayfayı çağırdığımızda  bir yazılım hatası ile karşılaştık. Satır sonundaki noktalı virgülü ekleyip şifre doğrudur ifadesini yazdırdığımızda Şifrenin doğru olduğunu görüyoruz. Herhangi bir harf değişken ifademiz md5 yapılmış metin ile doğru değilse şifre doğru olmadığı için if döngüsüne hiç girmemiş olur. Bu mantıkla direk php aracılığı ile şifremizi veritabanına crypt etmiş halde saklayabiliriz. tek yönlü dönüşüm olduğu için bu oluşturulan metin geri dönüştürülemez. Yalnız şöyle bir işleme tabi tutulabilir. Mesela kısa bir sayı verelim 123 gibi md5 post şifre diyerek yazdıralım sayfayı yenilediğimizde md5 halde olduğunu görüyoruz.

Şimdi 123 sayısının md5 halinin bu olduğunu zaten gördük bu durumda biz bir for döngüsüyle şifrelerin sadece sayılardan olduğu düşünürsek sıfırdan i küçük eşit 999, şifremizin üç rakamdan maksimum oluştuğunu kabul ettik. dördüncü rakama geçmesini engellemiş olduk bu döngü esnasinda şifremizin doğruluğunu kontrol ederek md5 halininde şöyle olduğunu farzedelim. $i değişkenimize md5 uyguladıktan sonra Bunun md5 değişkenine eşit olduğunu kontrol edersek böylelikle şifreyi bulan basit bir algoritma oluşturmuş oluruz. Şifrelenmiş metnin bu olduğunu biliyoruz. sıfırdan 999 a kadar bir döngü ile md5 haliyle bizim $i dongumuzu md5 e dönüştürüp karşılaştırarak kontrol ediyoruz ve böylelikle eğer ki metni bulursak şifrenin ne olduğunu söyleyerek döngümüzden çıkıyoruz.

<?php
$md5 = '202cb962ac59075b964b07152d234b70';
for($i=0; $i<=999; $i++){
    if( md5($i) == $md5 ){
        echo "sifre: $i";
        break;
    }
}
?>

bu yaptığımız işlem zaten brute force olarak nitelendiriliyor. Yani kombinasyon deneyerek sonuca ulaşmaya çalışıyoruz ve 123 sayısını bulmuş olduk. Bu mantıklada md5 olan bir şifrenin çözümlenmesinin tek yolu kombinasyon deneyerek bunu bulmaya çalışmaktır. bu şekilde md5 ile veritabanına saklayacağımız parola değerlerini şifreleyerek kaydedebiliriz.


Sitenize Aşağıdaki kodlari ekleyerek videoyu izletebilirsiniz
Bu Sayfayı İmleyebilirsiniz : Bookmark and Share
Videoya Henüz Yorum Yazılmamış
İlgili Dosya Bulunmamaktadır
Adınız, Soyadınız
Mail
Telefon
Adres
Referans
Sitede bulunan Tüm dökümanların izinsiz kopyalanması yasaktır. ProgramlamaTv.com 2008
Hizmet Sözleşmesi - Gizlilik İlkesi