Bir çok yazılımda, sadece yetkili kişilerin erişebildiği bir portal ihtiyacı olmuştur.
Bu portala Admin Modülü de denilmektedir.
Bu yazıda, yazılım dilinden ve teknolojiden (C#, Java, Php, Api, MVC …) bağımsız, bir admin modülünün giriş (login) analizi yapılmaktadır.
Kullanıcı adı ve şifre alanları içermelidir.
Kullanıcı adı: email, tc, ad.soyad, telefon gibi çeşitli biçimlerde olabilmelidir.
Şifre: Belli uzunlukta, karmaşık karakterler içerebilen biçimlerde olabilmelidir.
Şifreler veritabanında açık ve okunur şekilde saklanmamalıdır. Geri çözülemez şekilde şifrelenmiş olmalıdır.
Kullanıcı doğrulandıktan sonra access token üretilmeli ve bütün portal işlemlerinde bu access token istenmelidir.
Mobil, tablet, bilgisayar ekranlarına uyumlu olmalıdır.
Dikey ve yatay ekranlara uyumlu olmalıdır.
Modern Js frameworks (Jquery) ve css frameworks (Bootstrap) kullanılmalıdır.
Açılışta kullanıcı adına fokuslanmalıdır.
Bazı kullanıcılar, kullanıcı adını yazdıktan sonra Enter tuşuna basabiliyorlar. Bu durumda şifre alanına geçilmesi sağlanmalıdır.
Otomatik tamamlama (autocomplete) kapatılmalıdır.
Kullanıcı adı ve şifre gönderilmeden önce kullanıcı tarafında ön kontroller yapılmalıdır. (required, min, max)
Giriş (submit) butonlarına ard arda basılması engellenmelidir.
Sistemde email adresi veya telefonu kayıtlı olanlar kendi şifrelerini yeniden üretebilmelidirler. Email adresine (veya telefonuna SMS) 1 kullanımlık şifre sıfırlama linki gönderilir, linke tıklayan kullanıcı yeni şifresini oluşturabilir.
Kullanıcı, portalı kapatıp tekrar açtığında login olmadan direk portala girmek isteyebilir.
Bir önceki seviyedeki giriş maddelerini içermelidir.
Şifre uzunluk ve karmaşıklık kontrolü yapılmalıdır.
3 yanlış şifre girişinde kullanıcı adı ve ip adresi 1 dakika süreyle bloklanmalıdır. Sadece ip adresini bloklarsanız, hackerlar o binayı bloklayabilir. Sadece kullanıcı adını bloklarsanız, hackerler o kullanıcıyı bloklayabilir.
Sisteme en son giriş zamanı, en son giriş ip adresi, en son şifre değiştirme tarihi, yanlış şifre giriş sayısı kaydedilmelidir.
Captcha (Resim Doğrulaması) ile bot kontrolü yapılmalıdır.
https://www.google.com/recaptcha/about/ en çok kullanılan captchadır.
Session bilgisi HttpOnly cookie ile tutulmalıdır.
Kullanıcı IP adresi, HTTP_USER_AGENT bilgisi loglanmalıdır.
Access token kullanım süreleri olmalıdır.
Kurumun ihtiyacına göre OpenId destekli kimlik doğrulaması yapılabilir. Bu durumda servis sağlayıcı tarafından sadece kullanıcı adı ve adı soyadı gibi bilgiler temin edilebilir. Ekstra bilgiler (telefon, adres …), ayrıca kullanıcıdan istenebilir.
Bir önceki seviyedeki giriş maddelerini içermelidir.
Kullanıcı Id alanları benzersiz GUID (uniqueidentifier) biçiminde saklanmalıdır. Otomatik artan (Auto Increment) integer, tc kimlik no, id olarak kullanılmamalıdır.
2 aşamalı güvenlik doğrulaması olmalıdır.
SMS doğrulaması, Google Authenticator, Microsoft Authenticator kullanılabilir.
Beni hatırla fonksiyonu kaldırılmalıdır.
Şifrenin belli aralıklarla değiştirilmesi istenebilir.
Birden fazla IP adresi üzerinden giriş kısıtlanabilmelidir.
Portal içindeki hassas ayarları değiştirmek için ayrı bir şifre kullanılabilir.
İlk tanımlanan ve portal üzerinden sıfırlanan şifreler bir defa kullanılmalı ve mutlaka kullanıcı tarafından değiştirilmelidir.
Eğer kurum içinde birden fazla portal varsa, SSO ve SLO birlikte düşünülmelidir. Her portala ayrı şifre verilmemelidir.
Eğer kurum içinde birden fazla kimlik doğrulama sistemi varsa SSO gateway ve yetkilendirme tasarlanmalıdır. Örneğin Personel Yönetim portalına Active Directory kimlik doğrulaması ile girilebiliyorken, Müşteri İlişkileri portalına veritabanı form kimlik doğrulaması ile girilebilir. Bu durumda tek bir master şifre tanımlanabilir, diğer portallara geçiş yetkilendirmesi yapılabilir.