Giriş Formunda Kullanıcı Bilgisi Sızdırmayan Hata Mesajları
Giriş Formunda Kullanıcı Bilgisi Sızdırmayan Hata Mesajları hakkında dağınık bilgiler yerine derli toplu bir kaynak arıyorsanız doğru yerdesiniz. Bu yazı 5 temel noktayı ve bunları bir araya getiren PHP örneğini sade bir dille açıklıyor.
Giriş Formunda Kullanıcı Bilgisi Sızdırmayan Hata Mesajları hakkında dağınık bilgiler yerine derli toplu bir kaynak arıyorsanız doğru yerdesiniz. Bu yazı 5 temel noktayı ve bunları bir araya getiren PHP örneğini sade bir dille açıklıyor.
Temel kavram ve amaç
"Bu e-posta adresi kayıtlı değil" mesajı kullanıcıya yardımcı görünür; ama saldırgana hangi adreslerin sitenizde hesabı olduğunu söyler. Bu bilgi, hedefli kimlik avı ve şifre deneme saldırılarının ilk adımıdır. Giriş, kayıt ve şifre sıfırlama ekranlarında aynı genel mesajı vermek bu sızıntıyı kapatır.
Öne çıkan noktalar
- Tek tip mesaj: Giriş hatasında "e-posta ya da şifre hatalı" deyin; hangisinin yanlış olduğunu belirtmeyin.
- Şifre sıfırlamada da: Adres kayıtlı olsun olmasın aynı onay mesajını gösterin; e-postayı yalnız adres kayıtlıysa gönderin.
- Zamanlama sızıntısı: Kullanıcı bulunamadığında da şifre doğrulaması yapmak, yanıt süresinden bilgi çıkarılmasını önler.
- Kayıt ekranı: "Bu adres zaten kayıtlı" demek yerine adresin sahibine e-postayla bilgi vermek sızıntıyı tamamen kapatır.
- Hız sınırı: Genel mesaj tek başına yetmez; IP ve hesap başına deneme sınırıyla birlikte uygulanmalıdır.
PHP ile uygulama
Aşağıdaki PHP örneği, yukarıdaki noktaların gerçek bir kodda nasıl bir araya geldiğini gösteriyor:
// Geçerli bir bcrypt özeti: kullanıcı yoksa da aynı sürede doğrulama yapılır
const SAHTE_OZET = '$2y$10$gGBs4xcqXpgykAdbF/i4VOxr3ToXVYrOqck.fkH1vrRXlD4Ceutke';
$uye = $vt->satir('SELECT id, sifre FROM uyeler WHERE eposta = ?', [$eposta]);
$dogru = password_verify($sifre, $uye['sifre'] ?? SAHTE_OZET) && $uye !== null;
if (!$dogru) {
$hata = 'E-posta adresi ya da şifre hatalı.'; // hangisinin yanlış olduğu söylenmez
} else {
girisYap($uye);
}
// Şifre sıfırlama: adres kayıtlı olsun olmasın aynı mesaj
$mesaj = 'Bu adres kayıtlıysa şifre sıfırlama bağlantısı gönderildi.';Örneği kendi projenize uyarlarken değişken adlarını ve yapılandırma değerlerini ortamınıza göre değiştirmeyi unutmayın.
Kullanıcıdan gelen veriyi ekrana basarken htmlspecialchars() ile kaçışlamak XSS saldırılarının önüne geçer.
Avantajları
Kısaca özetlemek gerekirse:
- Saldırı yüzeyini daraltır ve olası veri sızıntılarının önüne geçer
- Güvenlik denetimlerinden daha kolay geçen bir kod tabanı sağlar
- Hataların canlı ortama çıkmadan fark edilmesine yardım eder
- Kullanıcı güvenini ve marka itibarını korur
Son söz
Giriş Formunda Kullanıcı Bilgisi Sızdırmayan Hata Mesajları konusunda ele aldığımız 5 nokta, günlük çalışmada en sık ihtiyaç duyulan kısmı kapsıyor. Özellikle Tek tip mesaj ve Hız sınırı başlıklarını uygulamaya geçirmek iyi bir başlangıç olur.
İlgili içerikler:
- Google Authenticator ile İki Adımlı Doğrulama (TOTP) Nasıl Çalışır?
- PHP PDO ile SQL Injection Koruması
- PHP ile Güvenli Dosya Yükleme: 8 Kontrol
Daha fazla uygulamalı içerik için Akademi derslerine ve blog yazılarına göz atabilirsiniz.
Yazar
Ferdi Giden @adminPHP, MySQL ve Tailwind ile kurumsal yazılımlar geliştiriyor; FerdiSoft çatısı altında ERP, WMS ve SaaS çözümleri üretiyor.