Web uygulamalarında hassas verilerin korunması büyük önem taşır. PHP, şifreleme ve veri koruma için güçlü araçlar sunar.
1. Şifreleme ve Veri Korumanın Önemi
✅ Kullanıcı verilerini güvence altına alır.
✅ Yetkisiz erişimi önler.
✅ Gizliliği ve veri bütünlüğünü korur.
✅ KVKK ve GDPR gibi regülasyonlara uyumluluk sağlar.
2. PHP ile Hashleme Teknikleri
Hashleme, veriyi tek yönlü olarak şifreleyerek geri döndürülemez hale getirir. Parola saklama ve veri bütünlüğünü sağlamak için kullanılır.
2.1. bcrypt Kullanımı
$password = 'GucluParola123';
$hashed_password = password_hash($password, PASSWORD_BCRYPT);
echo $hashed_password;
Parola Doğrulama:
if (password_verify($password, $hashed_password)) {
echo "Parola doğru";
} else {
echo "Parola yanlış";
}
2.2. Argon2 Kullanımı (Önerilen)
Argon2, günümüzde en güvenli parola hashleme algoritmalarından biridir.
$hashed_password = password_hash($password, PASSWORD_ARGON2ID);
Argon2, brute-force saldırılarına karşı daha dayanıklıdır.
3. Simetrik Şifreleme (AES-256) Kullanımı
AES-256, simetrik anahtar kullanarak veriyi şifreleyip çözmek için kullanılan güçlü bir algoritmadır.
3.1. AES-256 ile Şifreleme
$key = openssl_random_pseudo_bytes(32);
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$data = "Gizli Bilgi";
$encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, 0, $iv);
echo "Şifrelenmiş Veri: " . base64_encode($encrypted . '::' . $iv);
3.2. AES-256 ile Çözme
list($encrypted_data, $iv) = explode('::', base64_decode($encrypted), 2);
$decrypted = openssl_decrypt($encrypted_data, 'aes-256-cbc', $key, 0, $iv);
echo "Çözülmüş Veri: " . $decrypted;
4. Asimetrik Şifreleme (RSA) Kullanımı
RSA, özel ve açık anahtar kullanarak şifreleme ve imzalama işlemleri yapar.
4.1. RSA Anahtar Üretme
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in private.pem -out public.pem
4.2. RSA ile Şifreleme
$public_key = file_get_contents('public.pem');
openssl_public_encrypt("Gizli Mesaj", $encrypted, $public_key);
echo base64_encode($encrypted);
4.3. RSA ile Çözme
$private_key = file_get_contents('private.pem');
openssl_private_decrypt(base64_decode($encrypted), $decrypted, $private_key);
echo $decrypted;
5. OpenSSL ile Veri Bütünlüğü ve Dijital İmzalama
Veri bütünlüğünü sağlamak için OpenSSL ile mesaj imzalama kullanılabilir.
5.1. Veri İmzalama
openssl_sign("Önemli Veri", $signature, $private_key, OPENSSL_ALGO_SHA256);
echo base64_encode($signature);
5.2. İmza Doğrulama
$valid = openssl_verify("Önemli Veri", base64_decode($signature), $public_key, OPENSSL_ALGO_SHA256);
echo $valid ? "İmza geçerli" : "İmza geçersiz";
6. HMAC ile Veri Bütünlüğü Sağlama
HMAC, bir mesajın değiştirilmediğini doğrulamak için kullanılır.
6.1. HMAC Kullanımı
$key = "guvenli_anahtar";
$message = "Önemli Bilgi";
$hmac = hash_hmac('sha256', $message, $key);
echo "HMAC: " . $hmac;
Bu, verinin bütünlüğünü garanti eder.
Yorum gönder