Örnek bir iş senaryosu
Bir kullanıcı yavaş bağlantıda gönder düğmesine iki kez basabilir. Bu durum saldırı olmadan da iki kayıt oluşturabilir. Form gönderimine bir işlem kimliği bağlamak ve tekrarında aynı sonucu döndürmek yararlıdır. Bunun yanında kısa sürede aşırı istek, çok büyük gövde ve beklenmeyen alan türleri de sınırlandırılmalıdır. Başarısız kayıt için kullanıcıya başarılı mesajı gösterilmemelidir.
Dört adımda çalışma düzeni
Alan sınırlarını yazın
Ad, e-posta ve açıklama için tür ve uzunluk kurallarını sunucuda uygulayın.
Kayıt işlemini koruyun
Parametreli sorgu kullanın ve kullanıcı metnini çalıştırılabilir içerik olarak yorumlamayın.
Tekrarı yönetin
Aynı gönderimin tekrarını tanıyın; istek hızını makul sınırlarla kontrol edin.
Sonucu doğrulayın
Kalıcı kayıt oluşmadan başarı yanıtı vermeyin; hata halinde form bilgisini koruyun.
İlk bakışta görünmeyen noktalar
Hız sınırlamasında IP bilgisinin nereden geldiği önemlidir. İnternetten doğrudan gönderilebilen bir başlığı güvenilir istemci adresi saymak sınırın aşılmasına yol açabilir. Ters vekil kullanılıyorsa yalnızca güvenilen katmanın ürettiği bilgi kabul edilmelidir. Gönderim kayıtlarına ham IP yerine amaçla uyumlu özet kullanılması değerlendirilebilir; ancak bu veri de yönetilen bir kayıt olarak düşünülmelidir. Formun sunduğu bilgilendirme metni gerçek saklama ve kullanım davranışıyla uyumlu olmalıdır. Yönetici panelinde kullanıcı açıklaması gösterilirken HTML olarak çalıştırılmamalıdır. Bir test kaydına etiket benzeri metin yazıp yalnızca metin olarak görüntülendiğini doğrulamak yararlı bir kontroldür.
Sık yapılan hatalar
Formu yalnızca görünmez bir alanla korumak bütün kötüye kullanımları önlemez. Benzer şekilde kaynak kontrolü tek başına bot engelleme yöntemi değildir. Katmanlı kontroller ve operasyonel izleme gerekir; hiçbir kısa kontrol listesi sıfır risk garantisi vermez.
Kontrolü kanıtla kapatma
Güvenlik ve yayın kontrolünde her madde için gözlenebilir bir sonuç belirleyin. “Giriş güvenli” demek yerine yetkisiz isteğin reddedildiğini, çıkış sonrası oturumun çalışmadığını veya çok büyük form gövdesinin kabul edilmediğini test edin. Sonuçları kullanılan sürüm ve tarih bilgisiyle kaydedin. Böylece daha sonraki değişikliklerde aynı davranış yeniden kontrol edilebilir. Test verileri gerçek müşteri verisinden ayrılmalıdır. Kayıt oluşturan testler sonrasında yalnızca test kayıtlarının temizlendiği doğrulanmalıdır. Başarılı kontrolün kapsamını açık tutun; birkaç test bütün sistemin kusursuz olduğunu göstermez.
Uygulama ile sunucu sorumluluklarını ayırın. Kod alan doğrulamasını yapabilir fakat dosya izinleri, sertifika bağlaması ve yedek erişimi sunucu düzeyinde doğru kurulmalıdır. Bir katmanın varlığı diğerini gereksiz hale getirmez. Kaynak dosyaları, yapılandırma sırları ve veritabanı herkese açık web klasörüne konulmamalıdır. Kullanıcıya gösterilen hata mesajı teknik ayrıntı veya gizli bilgi içermemeli; sunucu tarafındaki kayıt tanı koymaya yetecek kadar bilgi taşımalıdır. Yeni bir bileşen eklendiğinde saldırı yüzeyi ve bakım sorumluluğu da değerlendirilmelidir. Gereksiz özellikleri açık bırakmak sonraki kontrol yükünü artırır.
Kontrolleri tek seferlik teslim maddesi olarak görmeyin. Yeni sürüm, yeni entegrasyon veya yetki değişikliği bazı varsayımları geçersiz kılabilir. Düzenli bağımlılık taraması, erişim gözden geçirmesi ve geri dönüş denemesi planlayın. Otomatik taramanın bulgu vermemesi bütün açıkların bulunmuş olduğu anlamına gelmez. Kritik uygulamalarda kapsamlı bağımsız güvenlik değerlendirmesi ayrıca düşünülmelidir. Küçük bir işletme için başlangıçta en değerli adım çoğu zaman sorumlulukları ve kontrol takvimini netleştirmektir. Sertifika, yedek ve yönetici hesabı gibi temel bileşenlerin sahibi belli olduğunda sorunlar kişisel hafızaya daha az bağımlı kalır.
Ekibinize sorabileceğiniz sorular
- Tarayıcı dışından gelen veri doğrulanıyor mu?
- Çift gönderim tek kayıt mı oluşturuyor?
- Kayıt başarısızsa kullanıcı bunu görüyor mu?
Bu soruları seçtiğiniz örnek kayıt üzerinde yanıtlayın. Her açık nokta için sorumlu kişiyi, yapılacak düzeltmeyi ve yeniden kontrol tarihini not edin. Böylece görüşme, uygulanabilir bir iş listesiyle tamamlanır.
Teknik başvuru: OWASP: Kimlik doğrulama rehberi ↗
Bu akışı işletmenize uyarlayalım.
Mevcut araçlarınızı, ekiplerinizi ve önceliklerinizi birlikte değerlendirerek uygun kapsamı belirleyelim.
Çözümü inceleyin ↗