PHP güvenlik kodu oluşturma ve doğrulama uygulaması sitelerde gerçekleşen üyelik girişi, iletişim formu, içerik paylaşımı gibi birçok işlemde proğramlar ve spam botlar üzerinden siteyi hedef alan saldırı girişimlerini engellemek için kullanılan ek güvenlik önlemidir.
PHP Güvenlik Kodu
Oluşturma
Bu tür güvenlik önlemine resim doğrulama kodu, basit 2+2 nedir gibi sorular yada google recaptcha tarzı uygulamalar örnek verilebilir. PHP güvenlik kodu doğrulaması nasıl yapılır? Görelim.
guvenlik_resmi.php Dosya İçeriği
PHP güvenlik kodu oluşturma dosyası. Kod satırlarında gerekli açıklamaları yaptım. PHP captcha ekleme uygulaması için güvenlik kodu mantığı özetle;
- PHP random sayı üretme işlemi ile 3 adet sayı üretiliyor. Bu sayıları birbirleriyle toplayıp çıkan sonucu PHP md5 şifreleme fonksiyonu ile anlamsız bir kod haline getiriyoruz.
- Bu kodu post işlemlerinde güvenlik kodu oluşturma sürecinde kullanmak için “guvenlik” isminde $_SESSION değişkenine atıyoruz. Böylelikle bu PHP dosyası her çağrıldığında rastgele bir kod üretilip $_SESSION değişkenine atılıyor ve rastgele güvenlik resmi oluşturuluyor.
- PHP GD kütüphanesi ile bir tuval ve kalıp oluşturulup bu kalıbın içeriğini siyah arkaplanla, belirtilen koordinatlara renkli çizgileri ekleyerek bir resim oluşturuluyor ve bu resmin üzerine yine belirtilen koordinatlarla rastgele oluşturulan kodu yazdırıyoruz.
- Ayrıca header() fonksiyonu ile PHP dosyasının png uzantılı resim gibi davranmasını sağlıyoruz.
index.php Dosya İçeriği
PHP captcha kullanımı için örnek uygulama. Güvenlik kodunu denemek amacıyla post işlemi için bir form oluşturup içerisinde etiketinin src özelliğine güvenlik.php dosyasının yolunu vererek güvenlik resmini gösterdik. Böylelikle $_SESSION[‘guvenlik_kodu’] değişkenine resimde bulunan güvenlik kodu atanmış oldu.
Javascript tarafından yenile butonuna tıklanıldığında güvenlik resmi değişecek ve her değiştiğinde $_SESSION[‘guvenlik_kodu’] değişkeninin değeri de güncellenmiş olacak. Artık bundan sonrasında post işlemi gerçekleştiğinde PHP güvenlik kodu doğrulama için girilen cevap ile $_SESSION[‘guvenlik_kodu’] değişkeninin değerinin aynı olup olmadığını kontrol etmek kalıyor.
Güvenlik Resmi
Güvenlik kodu doğru.