Konuyu Açan
#1
[ b]Giriş formu güvenliği için sorgu denetimi nasıl tasarlanır?[/b]
Bir kullanıcıdan kullanıcı adı ve parola gibi bilgiler alırken, form verilerini güvenli ve temiz şekilde işlemek, güvenlik açıklarını azaltmanın temel adımlarındandır. Aşağıda sık karşılaşılan sorunlar ve uygulanabilir çözümlerı paylaşıyorum.
1. Sunucu tarafı doğrulama her zaman zorunludur.
[list]
Form verilerini sunucuya gönderen her alan için tip kontrolü ve uzunluk sınırlandırması yapın. Örneğin kullanıcı adı en fazla 32 karakter olsun ve sadece harf, rakam ve belirli simgeler içerebilsin. Parola için minimum uzunluk ve güvenlik politikalarını uygulayın.
2. SQL enjeksiyonuna karşı hazırlıklı olun.
[list]
Veritabanı erişimini her zaman hazırlıklı ifadeler (prepared statements) ile yapın. Kullanıcı girdilerini bağlarken tür güvenliğini sağlayın.
3. Parola güvenliği ve saklama.
4. Yanıtları ve hataları dikkatli yönetin.
5. Doğrulama için ek güvenlik katmanları.
Siz kendi uygulamanızda hangi sorgu denetim tekniklerini önceliklendiriyorsunuz? Hangi hatalarıyle karşılaştınız ve nasıl çözdünüz? Deneyimlerinizi ve kullandığınız güvenlik kontrollerini paylaşır mısınız?
Bir kullanıcıdan kullanıcı adı ve parola gibi bilgiler alırken, form verilerini güvenli ve temiz şekilde işlemek, güvenlik açıklarını azaltmanın temel adımlarındandır. Aşağıda sık karşılaşılan sorunlar ve uygulanabilir çözümlerı paylaşıyorum.
1. Sunucu tarafı doğrulama her zaman zorunludur.
[list]
KOD
123$username = trim($_POST['username'] ?? '');
[/list]
if (!preg_match('/^[a-zA-Z0-9._-]{3,32}$/', $username)) { ... }2. SQL enjeksiyonuna karşı hazırlıklı olun.
[list]
KOD
123$stmt = $pdo->prepare('SELECT id FROM users WHERE username = :u');
[/list]
$stmt->execute(['u' => $username]);3. Parola güvenliği ve saklama.
- Parolaları veritabanında hash olarak saklayın; password_hash ile depolanmış hash’i password_verify ile kontrol edin.
- KOD
1
if (password_verify($password, $hashFromDb)) { ... }
4. Yanıtları ve hataları dikkatli yönetin.
- Hataları gösterirken hangi adımı yanlış yaptığına dair ayrıntı vermeyin. “Kullanıcı adı veya parola yanlış” gibi genel mesajlar kullanın.
- Oturum yönetimi için güvenli oturum başlatın ve oturum değişkenlerini gereksiz bilgilerle doldurmayın.
5. Doğrulama için ek güvenlik katmanları.
- CAPTCHA veya rate limiting ile brute force saldırılarını engellemeyi düşünün.
- Giriş denemelerini sınırlayan bir mekanizma ve her isteğin kaydını tutan bir günlük sistemi faydalı olabilir.
Siz kendi uygulamanızda hangi sorgu denetim tekniklerini önceliklendiriyorsunuz? Hangi hatalarıyle karşılaştınız ve nasıl çözdünüz? Deneyimlerinizi ve kullandığınız güvenlik kontrollerini paylaşır mısınız?
