Bu dersimizde Php’nin güvenlik ile ilgili bölümlerinden olan Md5, Crypt, Sha1 ve crc32 metodlarını inceleyeceğiz.
Md5, Crypt, Sha1 ve crc32 metodları ne işe yarar?
Web uygulamalarında kullanıcıların parolalarını güvenle saklamak için kullanılan yöntemlerdir.
Kullanım şekli:
md5($sifrelenecek_deger);
Örnek:
<?php $parola=1234; $md5_parola = md5($parola); echo $md5_parola; ?>
Ekrandaki çıktı: 81dc9bdb52d04dc20036dbd8313ed055
Diyelimki üye kayıt işleminde md5 ile şifreleme kullanacaksınız. Üyeden alınan şifreyi md5($sifre); fonksiyonu ile şifreledikten sonra veritabanına kaydederiz. Üye Giriş sayfasında da gelen parola bilgisini aynı şekilde md5($gelen_sifre); fonksiyonu yardımıyla şifrelenmiş şekliyle veritabanından sorgulama yaptırırız.
Md5 şifreleme metodu ile şifrelenmiş bir parolanın kırılması mümkün değildir diyemeyiz. Nedeni ise, kullanıcıların şifrelerinin kısa olmasıdır. Yani ziyaretçi 1234 veya 6789 gibi bir şifre kullanıyorsa, bu şifrenin Md5’ini kırmak 1 dk bile sürmeyecektir. Ama parolasının içinde büyük-küçük harf, rakam ve özel karakter de bulunuyorsa kırılması neredeyse imkansızdır.
Güvenli parola örneği: cA1397%x**+_B
Kullanması pek pratik olmasa da güvenli olduğu kesin :)
Crypt, Sha1 ve crc32 metodları
Bu şifreleme metodlarını da aynı md5’de olduğu gibi kullanabiliriz.
Kullanım şekli:
crypt($1234);
Ekrandaki çıktı: $1$hJ..WK1.$WXgbWRRS2KrhzEfliDrAL0
sha1($1234);
Ekrandaki çıktı: 7110eda4d09e062aa5e4a390b0a572ac0d2c0220
crc32($1234);
Ekrandaki çıktı: -1679564637
Şifreleme metodları hakkında genel olarak bilgi sahibi olduk.
Sizlere tavsiyem, şifreleme işlemini güçlendirmek için md5 yada diğer yöntemler ile şifrelediğiniz veriyi, en az 3 defa daha şifrelemeniz. Böylece kırılması neredeyse imkansız olur.
Sonuçlarını daha iyi anlamanız için md5 ile 1,2 ve 3 defa şifrelenmiş verileri kırmaya çalıştığımızda aldığımız sonuçlara bakalım:
md5(); ile 1234’ün şifrelenmiş hali:
1 defa şifrelenen: 81dc9bdb52d04dc20036dbd8313ed055
2 defa şifrelenen: ec6a6536ca304edf844d1d248a4f08dc
3 defa şifrelenen: 2e99bf4e42962410038bc6fa4ce40d97
Gördüğünüz gibi 1234 rakamının 1 defa şifrelenmiş hali kırılabiliyor. Ancak, şifrelenmiş veriyi 2 ve 3 kez tekrar şifrelediğimizde resimde de görüldüğü gibi şifre kırılamadı. Yani kullanıcı şifresini 1234 gibi kırılabilir basit bir şifre dahi yapsa siz bunun güvenlik önlemini almış oluyorsunuz.