Kullanıcı kimliği için temel güvenlik kontrol listesi
Kullanıcı kimliği oluşturmak herhangi bir uygulamanın kritik bir bileşenidir. Kullanıcı adlarını ve şifreleri doğrulamanın en basit yaklaşım gibi görünebilir, ancak dikkate alınması gereken birçok başka yön vardır.
Giriş
Kullanıcı kimliğinin oluşturulması her uygulamanın kritik bir bileşenidir. Bu, size kişiselleştirilmiş deneyimler sunma, veri kalitesini artırma ve kullanıcı tutma oranını skorlama yeteneğinizi sağlar.
Kullanıcı adlarını ve şifreleri doğrulamanın en basit yaklaşım gibi görünebilir, ancak dikkate alınması gereken birçok başka yön vardır. Başlayalım!
Altyapı
HTTPS'i Zorunlu Kıl
Temellerle başlayalım. Her zaman internet üzerinden veri iletimini şifrelemek için HTTPS (Hypertext Transfer Protocol Secure) kullanımını zorunlu kılar. HTTPS, kullanıcı cihazı ile sunucunuz arasında değiş tokuş edilen verilerin gizli ve değiştirilemez olduğunu garanti eder.
HTTPS'i kurmak zor gibi görünebilir, ancak size yardımcı olacak birçok araç ve hizmet var:
- Kendi başınıza hosting yapıyorsanız, Let's Encrypt web sitenizde HTTPS'i etkinleştirmek için kullanılabilecek ücretsiz SSL/TLS sertifikaları sağlar.
- AWS, Azure veya Google Cloud gibi bir bulut sağlayıcısını kullanıyorsanız, HTTPS'i kurmak için yönetilen hizmetlerini kullanabilirsiniz.
Genel veritabanı erişimine izin vermeyin, sadece güvenilir kaynaklara sınırlı
Bu da oldukça temel gibi görünebilir, ancak veritabanlarına kamu erişimine izin verme nedeniyle sayısız güvenlik ihlali yaşandı. Bu yüzden burada bunu belirtmeye değer.
Veritabanınıza asla kamu erişimine izin vermemeniz gerektiğini her zaman hatırlayın. Veritabanınızı özel bir ağa koyun ve yalnızca güvendiğiniz kaynaklardan erişime izin verin.
Özel simgeleri güvenli bir şekilde yönet
Özel simgeler, programatik kimlik doğrulama ve yetkilendirme amacıyla sıklıkla kullanılır. Bu simgeleri güvenli bir şekilde yönetmek için:
- Yetkisiz erişim riskini en aza indirmek için kısa ömürlü simgeler ve yenileme simgeleri kullanın.
- Bir anahtar kasası gibi güvenli bir simge depolamam mekanizması kullanarak simgeleri yetkisiz erişimden koruyun.
- Onların ele geçirilmesini engellemek amacıyla simgeleri düzenli olarak değiştirin. Bazı protokoller, OAuth 2.0 gibi, simge rotasyonu için bir mekanizma sağlar.
- Güvenlik ihlali durumunda simge iptalini kontrol etmeye devam edin.
Bir şifre karma algoritmasını dikkatlice seçin
Şifre karma işlemleri konusunda tecrübeniz varsa, artık güvenli olarak kabul edilmeyen birçok algoritmanın mevcut olduğunu bilmekteysinizdir, örneğin MD5, SHA-1 ve SHA-2.
Onların güvenliksiz olmasının bazı yaygın nedenler şunlardır:
- Şifre karma işlemleri için özel olarak tasarlanmadılar ve hesaplama hızları çok hızlı, dolayısıyla kaba kuvvet saldırıları daha kolay.
- Tuz kullanımını içermezler, bu da onlar için rainbow tables oluşturmayı daha kolaylaştırır.
- Çarpışma saldırılarına duyarlıdırlar, saldırganların aynı karma değeri olan farklı şifreler oluşturmasına izin verir.
Endüstri standartı şifre karma algoritmaları, bcrypt ve Argon2 gibi, bu sorunları ele almak üzere tasarlanmıştır. Bu makalenin kapsamı nedeniyle, onlar hakkında ayrıntılı olarak bahsetmeyeceğiz. Daha fazla bilgi için Şifre karma işlemlerinin evrimi makalesine bakabilirsiniz.
Açık standartları öğrenin ve katı bir şekilde uygulayın
OAuth 2.0 ve OpenID Connect (OIDC) gibi açık standartlar kullanıcı kimlik doğrulama ve yetkilendirme için güvenli ve standartlaştırılmış yaklaşımlar sağlar. Bunlar endüstri tarafından savaş testine tabi tutulmuş ve geniş çapta kabul görmüştür.
Ancak, bunları yanlış bir şekilde uygulamak, deneyimli geliştiricilere sahip büyük ekipler için bile güvenlik açıkları oluşturabilir. Son dönemde Expo'da bulunan OAuth açığının keşfedilmesi mobil app oluşturma konusunda popüler bir çerçeve olan Expo'yu örnek olarak gösterir. Bu, küçük bir hata durumunda güvenlik ihlali oluşabileceğini güzel bir şekilde örneklendirir.
Dinlenen verileri şifreleyin
Dinlenen veriler, saklanan kullanıcı bilgileri veya veritabanı yedekleri gibi, gü çlü bir şifreleme algoritması kullanılarak şifrelenmelidir. Bu, verinin ele geçirilmesi durumunda bile, deşifreleme anahtarı olmadan okunamayacağı anlamına gelir. Bulut sağlayıcınızın bu özelliği desteklediğini kontrol ettiğinizden emin olun, çünkü bu genelde uyumluluk amaçları için gereklidir.
Güvenlik duvarları kurun
DDoS (Dağıtımlı Hizmet Engelleme) saldırıları, eski olmalarına rağmen, önemli bir tehdit oluşturmaya devam eder. Cloudflare DDoS tehdit raporuna göre 2022 Q4, HTTP DDoS saldırı trafiği YoY olarak %79 arttı. Kendi çözümünüzü oluşturmak yerine, bu riski hafifletmek için yönetilen güvenlik duvarları kurma ve bildiricileri kullanma iyi bir fikirdir.
Uygulamalar ve istemciler
Halka Açık İstemciler İçin Güvenlik Seviyesini Artırın
Mobil uygulamalar veya tek sayfalık uygulamalar gibi halka açık istemciler, güvenlik açıklıklarına daha duyarlıdır. Onları sağlasanız bile, güvenlik modelinizde onları güvenilmeyen kaynaklar olarak kabul etmelisiniz. Örneğin:
- OAuth 2.0 kullanıyorsanız, yetkilendirme kodu kesme saldırılarına karşı korunmak için Kod için Kanıt Anahtarı Değişimi (PKCE) kullanın.
- Cross-Site Scripting (XSS) ve veri enjeksiyon saldırıları dahil olmak üzere belirli tür saldırıları hafifletmek için İçerik Güvenlik Politikası (CSP) uygulayın.
Kamu giriş verilerine asla güvenmeyin
Kullanıcı girişi, sıklıkla gözden kaçan güvenlik açıklıklarının önemli bir kaynağı olabilir. Gözden kaçan güvenlik açıklığı türlerinin örnekleri Cross-Site Scripting (XSS) ve SQL Injection olabilir. Tüm kullanıcı giriş verilerini kullanmadan önce olduğunu doğrulayın ve temizleyin.
Aktiviteleri takip edin
Kullanıcı aktivitelerinin denetim izini tutmak, güvenlik olaylarını tespit etmek ve araştırmak için yardımcı olur. Kullanıcı eylemlerini, örneğin giriş girişimlerini, şifre değişikliklerini veya hassas işlemleri, kaydedin ve izleyin. Bu kayıtları analiz etmek, olası güvenlik ihlalleri veya şüpheli aktiviteler hakkında değerli bilgiler sağlayabilir.
Sağlam kimlik doğrulama uygulayın
Kullanıcıların kimliğini doğrulama yeteneğine sahip güçlü bir kimlik doğrulama mekanizması implemente edin. Daha önce belirtildiği gibi, kimlik doğrulama için OAuth 2.0 veya OpenID Connect gibi güvenli protokoller kullanmayı düşünün. Daha fazla bilgi için, CIAM 101: Authentication, Identity, SSO makalesine başvurabilirsiniz.
Sağlam yetkilendirme inşa edin (örneğin, Rol Tabanlı Erişim Kontrolünü uygulayın)
Kimlik doğrulamanın yanı sıra, uygun yetkilendirme mekanizmaları da olmalıdır. Kullanıcıların yalnızca yetkili olduklarına göre kaynaklara ve eylemlere erişim hakkına sahip olduunu garanti altına alan Rol Tabanlı Erişim Kontrolü (RBAC) uygulayın. Daha fazla bilgi için, CIAM 102: Yetkilendirme ve Rol Tabanlı Erişim Kontrolü makalesine başvurabilirsiniz.
Çok Faktörlü Kimlik Doğrulaması (MFA) Uygulayın
Çok Faktörlü Kimlik Doğrulama (MFA), kullanıcılardan bir şifre ve mobil cihazlarına gönderilen bir seferlik kod gibi tek veya birden fazla tanıma biçimini sağlamalarını gerektirerek ekstra bir güvenlik katmanı ekler. MFA'nın başka bir iyi örneği, GitHub'ın kullanıcılardan hassas işlemleri gerçekleştirirken, web sayfasında görüntülenen mobil uygulamalarından bir seferlik bir kod girmelerini istemesidir.
Ancak, çoğu erken aşama start-up için bir MFA gereklilik olmayabilir, özellikle hazır bir çözümünüz yoksa. Bu, fazla olabilir ve kullanıcı deneyiminizi olumsuz şekilde etkileyebilir.
Kültür
Yukarıda sağlanan tavsiyeler genellikle "pasif" güvenlik önlemlerini, bu bir güvenlik olayı oluşmadan önce bilinen, kapsar. Ancak, aynı zamanda genel güvenlik duruşunuzu iyileştirmek için "aktif" güvenlik önlemleri alabilirsiniz, bu da uzun vadede daha etkili olacaktır.
Ekibinizi ve kullanıcılarınızı phishing ve sosyal mühendislik hakkında bilgilendirin
Phishing saldırıları ve sosyal mühendislik kritiktir çünkü bunlar yukarıda belirtilen güvenlik önlemlerinin çoğunu etkisiz kılabilir. Örneğin, bir kullanıcının şifresini verme veya zararlı yazılım içeren görünüşte masum bir kedi resmi tıklaması için kandırılması durumunda, şifreleme algoritmanızın gücü veya güvenlik duvarı kurallarınız önemsiz hale gelir.
Çoğu kişi güvenlik eğitimini sıkıcı bulur ve genellikle öyledir. Bu yüzden ekibinizi ve kullanıcılarınızı eğitme şeklini değiştirin. Örneğin, gerçek bir saldırgan yapmadan önce bir phishing e-postasını simüle edebilir ve nasıl tanımlanacağını gösterebilirsiniz. E-postayı güvenlik ekibine bildirenler için hatta ödüller sunabilirsiniz.
DevSecOps Kurun
Manuel güvenlik incelemelerine ek olarak, DevSecOps uygulamalarını otomatik güvenlik kontrollerini uygulama da dahil olabilirsiniz. Örneğin, CodeQL gibi statik kod çözümleme araçlarını çalıştırmak için bir CI/CD boru hattı oluşturabilir ve otomatik olarak kalem testlerini OWASP ZAP gibi aletleri kullanarak çalıştırabilirsiniz.
Kullanıcı deneyimini etkilemeksizin en sıkı yapılandırmayı benimseyin
Güvenlik konusunda, kullanıcı deneyimini olumsuz etkilemeyecek en güvenli yapılandırmayı seçin. Kısayollar almayın veya kolaylık için güvenliği ihmal etmeyin. Güvenlik her zaman en üst öncelik olmalıdır.
Bir startup veya bağımsız bir geliştirici olarak, bu önlemleri uygulamak için gerekli kaynaklardan yoksun olduğunuzu hissedebilirsiniz. Bununla birlikte, ücretsiz veya startup dostu seçenekler sunan profesyonel güvenlik hizmetleri mevcuttur. Onları incelemek ve kullanmayı düşünmek için zaman ayırın.
Sonuç
Güvenlik karmaşık bir konudur ve her şeyi tek bir makalede kapsamak imkansızdır. Umarız bu makale, kendiniz veya ekibiniz için daha güçlü bir güvenlik bilinci oluşturmanıza yardımcı olmuştur. Yeni bir uygulama oluşturuyorsanız Logto platformunu kontrol etmek isteyebilirsiniz, Logto ürünlerinizin kullanıcı kimliklerini geliştirme, yönetme ve güvende tutma konusunda minimum çaba ile yardımcı olur.