Uygulama kullanıcılarının kimliklerini teyit etmek ve yetkilerini belirlemek günümüz uygulamalarının işlevselliğini doğrudan etkileyen önemli unsurlardan bir tanesidir. Kişisel ve kurumsal e-posta hesaplarımızın yopmail.com adresleri gibi bütün dünyaya açık olduğu bir dünyada ne ticaret yapabilirdik ne de e-postayı bugünkü haliyle kullanabilirdik. Bu nedenle herhangi bir uygulama geliştirirken kullanıcılarının kimliklerinin teyit edilmesi ve yetkilerinin denetlenmesi son derece önemlidir.
İşlev sorunlarını bir kenara bırakırsak, kimlik doğrulama herhangi bir uygulamanın güvenliğinin ilk aşaması gibi düşünülebilir. A kullanıcısının B kullanıcısına ait bilgilere ulaşması veya C kullanıcısının D kullanıcısı adına işlemler yapmasını bir kenara bırakalım. Herhangi birinin A kullanıcısı gibi uygulamaya giriş yapabilmesi bile başlı başına büyük sorunlar oluşturur.
Kullanıcı kimlik doğrulaması sürecini düşündüğümüzde yerine getirildiğinden emin olmamız gereken birkaç farklı işlev var;
- Kullanıcının kimliğinin doğrulaması
- Başarısız giriş denemelerinin ele alınması
- Başarılı ve başarısız giriş denemelerinin kayıt (log) altına alınması
- Kullanıcının çıkış yapması halinde oturumun imha edilmesi
Belli durumlarda (örn: finans uygulamalarında) kullanıcının oturumunun belli bir sürenin sonunda imha edilip yeniden oturum açılması gerekebilir.
Kullanıcı kimlik doğrulama sürecinin güvenliği düşünüldüğünde bazı tedbirlerin alınması şarttır. İlk akla gelen iki kademeli kimlik doğrulama olsa bile, kullanıcı adlarının korunmasından parola politikalarına kadar geniş bir yelpazedeki önlemler düşünülmelidir.
Uygulama güvenliğinin her alanında olduğu gibi burada da karar büyük ölçüde uygulamanın işlevine, sektörüne veya önem derecesine bağlı olsa da, aşağıdakilerin değerlendirilmesinde fayda olacaktır;
- Güçlü parola kullanımının mecbur tutulması
- Parolaların kullanım sürelerinin belirlenmesi
- “Parolamı unuttum” sürecinin güvenliği
- Güvenli iletişim yöntemlerinin kullanımı
- Uygulama veritabanında tutulan parolalarının şifreli tutulması
Sızma testleri sırasında uygulamaların giriş ekranlarıyla ilgili en sık karşılaştığımız sorunları aşağıda toparladık;
- Şifrelenmeden iletilen hassas bilgiler: Yerel ağda çalışan uygulamaların ya SSL sertifikasının olmaması ya da kendinden imzalı ve tarayıcıda hata veren SSL sertifikası kullanılması.
- Kaba kuvvet saldırılarına açık giriş ekranı: CAPTCHA, süre kısıtlaması, hesap kilitleme, vb. parola tahmin saldırılarına karşı herhangi bir tedbir olmaması
- SQL injection ile kullanıcı giriş sürecinin atlatılması: Kimlik doğrulaması için yapılan veritabanı sorgusuna müdahale edilmesi.
- “Password spraying” saldırılarının öngörülmemesi: 2019 yılında milyonlarca e-posta adresi ve parola internete düştü. Kuruluşların kendilerine ait parolaların ifşa olup olmadığını takip etmesini sağlayacak pek çok yöntem varken bunların kullanılmaması sonucunda ifşa olmuş parolanın yerel ağ uygulamalarında geçerli olması.
- Zayıf parola kullanımı: Password1 de gördük, nail123 de… kullanıcıların kolay tahmin edilebilir parolalar kullanması sonucunda kritik kurumsal uygulamalara giriş yapmak mümkün oluyor
- Zayıf siber güvenlik hijyeni: Fazla söze gerek yok, bkz. Şekil A-1