Web Altyapısında Büyük-Küçük Harf Duyarlılığının Gizli Tehlikeleri
Küçük Harf Büyük Harf Meselesi Neden Bu Kadar Önemli?
Geliştirme ortamında her şey mükemmel çalışıyor. Test sunucusu sorunsuz koşuyor. Ama üretim ortamında garip hatalar başlıyor—ya da daha kötüsü, güvenlik araştırmacıları hiç beklemediğiniz açıklıkları buluyor.
Çoğu zaman sorun basit bir mantık hatası değildir. İş bu noktada başlıyor: sisteminizin karakter büyüklüğünü yanlış yorumlaması.
Neden Bu Önemli?
Çoğu geliştiriciye göre bu konuda herkes aynı fikirde: domain adları büyük küçük harf duyarlı değildir. example.com, Example.com ve EXAMPLE.COM tamamen aynıdır. Basit, değil mi?
Peki bunlara ne dersiniz:
- Kimlik doğrulama sisteminizdeki e-posta adresleri
- Veritabanında tutulan kullanıcı kimlikleri
- Bulut depolamanızda saklanan dosya yolları
- Hizmetinizin tükettiği API uç noktaları
- SSL sertifika doğrulama mekanizması
Altyapınızın farklı bölümleri karakterleri farklı şekilde işlediği andan itibaren güvenlik sorunı ortaya çıkıyor.
Gerçek Hayattaki Bir Saldırı Senaryosu
Şunu düşünün: Uygulamanız kullanıcıları e-posta adresi ile doğruluyor ve e-postaları veritabanında küçük harfle saklıyor. Mantıklı bir yaklaşım. Ama OAuth sağlayıcınız John.Smith@gmail.com formatında karışık harfli adres döndürüyor. Kimlik doğrulama sisteminiz normalleştirme yapmadan metin karşılaştırması yapıyor.
Bir saldırgan john.smith@gmail.com ile kayıt oluşturuyor, hesabına giriş yapıyor, ardından sisteminizde John.Smith@gmail.com denemesini yapıyor. Eğer büyük küçük harf işlemi tutarsız ise şunlar olabilir:
- Hız kısıtlamalarını aşma (farklı kullanıcı olarak görünme)
- Yüksek yetkilere sahip yinelenen hesaplar oluşturma
- Güvenlik denetim günlüklerini atlama
- Erişemeyecekleri kaynaklara ulaşma
Bu sorun özellikle şu durumlarda daha tehlikeli:
Uluslararası Domain Adları (IDN) – Unicode kuralları dile göre değişir. Türkçedeki noktasız 'i' ASCII standartlarını bozar. Bazı karakterlerin büyük harfi bile yoktur.
Bulut Depolama Sistemleri – AWS S3'te nesne anahtarları büyük küçük harf duyarlı, ama kova adları değildir. Burada karışıklık veri sızıntısı ya da yetki yükseltmesine neden olabilir.
DNS Kayıtları – DNS sorguları büyük küçük harfe duyarlı olmasa da, uygulamanızın DNS doğrulaması olabilir. Joker sertifikalar ve CNAME doğrulaması saldırı yüzeyine dönüşebilir.
Altyapınızı Nasıl Korursunuz
1. Normalleştirme Standardı Belirleyin
Büyük küçük harf kurallarını veritabanı seviyesinde değil, uygulama seviyesinde tanımlayın. Tüm girdileri hemen alındıklarında normalleştirin.
# Doğru yol: Sınırda normalleştirin
def normalize_email(email):
return email.lower().strip()
def authenticate_user(email):
normalized = normalize_email(email)
user = User.query.filter_by(email=normalized).first()
return user
2. Unicode'u Destekleyen Kütüphaneler Kullanın
Uluslararası içerikle çalışıyorsanız kendi çözümünüzü yazmayın. Bunu yapması için tasarlanmış kütüphaneleri tercih edin:
- Python:
unicodedata - JavaScript: Yerleşik
String.localeCompare() - Go: Unicode desteği olan
stringspaketi
3. Sistemler Arası Test Yapın
Uygulamanız yalnız başına değildir. Şunlarla test edin:
- DNS sağlayıcınızın API'si
- SSL sertifika verenin doğrulama sistemi
- Üçüncü taraf OAuth sağlayıcıları
- Bulut depolama hizmeti
- CDN'inizin kural motoru
Her sistem nasıl davrandığını belgelendirin ve tutarlılığı sağlayın.
4. Katı Girdi Doğrulaması Yapın
Dış sistemlerin aynı şekilde işlediğini varsaymayın. Entegrasyon noktalarında her verileri doğrulayıp normalleştirin.
// Dış API çağrıları yapmadan önce
const normalizeForAPI = (input, format = 'lowercase') => {
const normalized = format === 'lowercase'
? String(input).toLowerCase()
: String(input);
return normalized.trim();
};
5. Büyük Küçük Harf Sorunlarını Günlüğe Kaydedin
Şüpheli harf varyasyonları için uyarılar oluşturun:
def detect_case_variance(email):
normalized = email.lower()
if email != normalized:
logger.warning(f"Harf varyasyonu saptandı: {email} vs {normalized}")
# Potansiyel saldırı desenlerini araştırın
6. İyi Altyapı Uygulamalarını Takip Edin
Domain kaydı veya DNS yapılandırması yaparken şu ilkeleri uygulay:
- Kodunuzda domain adlarını her zaman küçük harfle yazın
- DNS kayıtlarını tutarlı harf standardı ile saklayın
- API'nin büyük küçük harf duyarsız özelliklerine güvenin
- Altyapı kodu belgelerinizde harf işleme stratejinizi yazın
Sonuç
Güvenlik sadece güçlü şifreler ve HTTPS hakkında değildir. Tüm ekosisteminiz verileri nasıl işliyor bunu anlamakla ilgilidir. Harf büyüklüğündeki küçük bir tutarsızlık, kimlik doğrulama katmanından depolama katmanına ve API entegrasyonlarına kadar her yere yayılabilir.
Bu sorunları erken yakalayan geliştiriciler bunları yapan insanlardır:
- Varsayımlara sorgu sorun – Sistemlerin verileri nasıl normalleştirdiğini varsaymayın
- Uç durumlarda test edin – Harf varyasyonları güvenlik testlerinizin parçası olsun
- Davranışı belgelendirin – Her sistem harf büyüklüğünü nasıl işlediğini yazın
- Tutarlı normalleştirin – Bir standart seçip her yerde onu uygulayın
Gelecekte bu konuya bakanlar (saldırganlar olsa bile) teşekkür edecekler.