03-11-2016 Saat: 13:11
Malumunuz verilerimizi base64 biçiminde veritabanımıza kaydetmek bazen
sakıncalı olabiliyor, md5 tarzı işlevler kullanarak da verilerilerimizi geri
dönüşümsüz olarak istiflemek işimize gelmeyebiliyor. İşte böyle sıkıntı
yaşadığımız zamanlarda kullanabileceğimiz MySQL’in kendi bünyesinde
bulunan bir işlev işimiz görebilir. İçinizin rahat etmediği durumlarda bu
işlevi kullanmanızı şiddetle tavsiye ederim.
İstiflediğiniz veriyi Binary biçiminde saklaması güvenirliğinin kaynağı!
Aşağıdaki misalde bir alışveriş sitemiz olduğunu farzederekten, kredi kartı
numaralarının tutulacağı alanı ve kredi kartı numarasını ele alacağım.
#Kredi kartı numaralarının 14 hanesinin de veri tabanında tutulması
kanunen yasaktır, ancak 12 hanesini tutulabilir. Bazı işlemler için bu
verilere ihtiyacımız olabiliyor.
1. adım;
öncelikle MySQL’de veriyi saklamak istediğimiz tabloya bir alan açıyoruz ve
bu alanın türünü BLOB olarak belirliyoruz.
___________________________________________________________
tablo -> shopping_details
alan -> CC_Number[BLOB]
___________________________________________________________
#Hatırlatma: ENCODE/DECODE işlevi daha önceden belirlenmiş bir şifreyle
gelecek veriyi tabloya şifreleyerek yazar, geri çekerken de aynı şifreyi
ister ve bu döngü her zaman böyle işler. Yani en evvel bir şifre
oluşturmalı, bunu bir değişkene veya sabite atamalı ve mahfuz bir
dosyada tutmalısınız (mesela db_conn.php veya config.php).
2. adım;
evvelen yukarıdaki hatırlatmada bahsettiğim şifremi oluşturuyorum.
3. adım;
evet, verimizi güvenli bir şekilde şifreleyerek veri tabanımıza ekledik,
peki çekerken nası edecez?
sakıncalı olabiliyor, md5 tarzı işlevler kullanarak da verilerilerimizi geri
dönüşümsüz olarak istiflemek işimize gelmeyebiliyor. İşte böyle sıkıntı
yaşadığımız zamanlarda kullanabileceğimiz MySQL’in kendi bünyesinde
bulunan bir işlev işimiz görebilir. İçinizin rahat etmediği durumlarda bu
işlevi kullanmanızı şiddetle tavsiye ederim.
İstiflediğiniz veriyi Binary biçiminde saklaması güvenirliğinin kaynağı!
Aşağıdaki misalde bir alışveriş sitemiz olduğunu farzederekten, kredi kartı
numaralarının tutulacağı alanı ve kredi kartı numarasını ele alacağım.
#Kredi kartı numaralarının 14 hanesinin de veri tabanında tutulması
kanunen yasaktır, ancak 12 hanesini tutulabilir. Bazı işlemler için bu
verilere ihtiyacımız olabiliyor.
1. adım;
öncelikle MySQL’de veriyi saklamak istediğimiz tabloya bir alan açıyoruz ve
bu alanın türünü BLOB olarak belirliyoruz.
___________________________________________________________
tablo -> shopping_details
alan -> CC_Number[BLOB]
___________________________________________________________
#Hatırlatma: ENCODE/DECODE işlevi daha önceden belirlenmiş bir şifreyle
gelecek veriyi tabloya şifreleyerek yazar, geri çekerken de aynı şifreyi
ister ve bu döngü her zaman böyle işler. Yani en evvel bir şifre
oluşturmalı, bunu bir değişkene veya sabite atamalı ve mahfuz bir
dosyada tutmalısınız (mesela db_conn.php veya config.php).
2. adım;
evvelen yukarıdaki hatırlatmada bahsettiğim şifremi oluşturuyorum.
Kod:
<?
#şifrem
$CrypterPassword = "OlumHaciKilincArslanBirGunSendeYalanOlursun";
?>
3. adım;
Kod:
<?
#post’tan verimi alayım temizleyeyim önce
$CCNumber = trim(htmlspecialchars($_POST["CCNumber"]));
#sonra 12 hanesinden gayrısını atayım
$CCNumber = substr($CCNumber, 0, 12);
?>
<?
#veri ekleme sorgum
$MyQuery = "
INSERT INTO
shopping_details (CC_Number)
VALUES
(ENCODE ’".$CCNumber."’,’".$CrypterPassword."’)"; #dırnaklara dikkat buyrun
@mysql_query($MyQuery);
?>
evet, verimizi güvenli bir şekilde şifreleyerek veri tabanımıza ekledik,
peki çekerken nası edecez?
Kod:
<?
$MyQueryTmp = "
SELECT
(DECODE CC_Number,’".$CrypterPassword."’)
AS
CCNumber
FROM
shopping_details"; #dırnaklara dikkat buyrun
$MyQuery = @mysql_query($MyQueryTmp);
#alan bul
$GetData = @mysql_fetch_array($MyQuery);
#veriyi çek
$ThisIsTheCCNumber = $GetData{"CC_Number"}; #bulduk
?>