Bölüm 13 / 33
Kimlik Doğrulama, Yetkilendirme ve Uygulama Güvenliği
Kullanıcı kimliği, rol ve izin yapıları ile web uygulamalarında temel güvenlik tehditleri.
6 canlı örnek — seçerek incele
İlgili kavramlar: Authentication, Session, Form
Giriş formu
Bir kullanıcı, servis veya cihazı sistem içinde benzersiz olarak temsil eden kimlik.
Bir kullanıcının iddia ettiği kişi olduğunu doğrulama işlemi.
Kimliği kanıtlamak için kullanılan parola, token, sertifika veya anahtar.
Kullanıcı hesabını tanımlayan giriş adı.
Kullanıcı hesabına e-posta adresiyle giriş yöntemi.
Kullanıcının bildiği gizli kimlik doğrulama değeri.
Parolanın tek yönlü algoritmayla geri çevrilemez özete dönüştürülmüş hâli.
- SaltO
Aynı parolaların farklı hash üretmesi için her parolaya eklenen rastgele veri.
Parola saklamak için maliyeti ayarlanabilen yavaş hash algoritması.
Bellek ve işlem maliyeti ayarlanabilen modern parola hash algoritması.
Minimum uzunluk, yasaklı parola ve tekrar kullanım gibi parola kuralları.
Kullanıcının doğrulanmış kanal üzerinden yeni parola belirlemesi süreci.
Tek kullanımlık ve süreli parola sıfırlama anahtarı.
Hesabın e-posta adresine erişimin doğrulanması.
- MFAO
Kimlik doğrulamada birden fazla bağımsız faktör kullanma.
- 2FAT
Parolaya ek olarak ikinci doğrulama adımı kullanma.
- TOTPO
Authenticator uygulamalarının zaman tabanlı tek kullanımlık kod standardı.
- OTPT
Bir kez veya kısa süre kullanılabilen doğrulama kodu.
İkinci faktöre erişim kaybolduğunda kullanılabilen yedek kod.
Public key kriptografisiyle parola yerine cihaz tabanlı giriş yöntemi.
Tarayıcı ve authenticator arasında phishing'e dayanıklı kimlik doğrulama standardı.
Parmak izi veya yüz gibi biyometrik doğrulamayı cihaz üzerinden kullanma.
Sunucuda oturum kaydı, tarayıcıda session id cookie'si kullanan giriş modeli.
Sunucu tarafındaki oturum kaydını tanımlayan rastgele değer.
Aktif oturumların Redis veya veritabanında tutulduğu depo.
Oturumun belirli süre sonunda geçersiz olması.
Kullanıcı etkin değilken belirli süre sonunda oturumu kapatma.
Etkinlik olsa da oturumun maksimum yaşam süresi.
- JWTO
Header, payload ve signature bölümlerinden oluşan imzalı token formatı.
Token içindeki claim verileri; şifrelenmiş olmak zorunda değildir.
Token'ın değiştirilmediğini ve beklenen anahtarla üretildiğini doğrular.
Token içinde kullanıcı, yetki veya süre hakkında taşınan bilgi.
Token'ın sona erme zamanını belirtir.
Token'ı yayınlayan sistemi belirtir.
Token'ın hangi hedef servis için üretildiğini belirtir.
Süresi dolmadan token veya oturumun geçersiz kılınması.
Her yenilemede eski refresh token'ı iptal edip yenisini üretme.
- RBACO
Yetkileri kullanıcı yerine rol grupları üzerinden yönetme modeli.
- RoleT
Admin, editör veya personel gibi izin grubu.
Müşteri görüntüle veya fatura sil gibi belirli işlem yetkisi.
Kullanıcıya bir veya birden fazla rol bağlama işlemi.
Roller ile kaynak-işlem izinlerini tablo hâlinde gösteren yapı.
- ABACİ
Yetki kararını kullanıcı, kaynak ve ortam attribute'larına göre verme modeli.
Bir erişim kararının koşul ve sonuçlarını tanımlayan kural.
Kullanıcının yalnızca kendisine ait kaynağa erişmesini doğrulama.
Bir müşterinin verisinin başka tenant tarafından görülememesini garanti etme.
Kullanıcı ve servislerin yalnızca ihtiyaç duyduğu minimum yetkiye sahip olması.
Riskli bir işlemin tek kişi tarafından baştan sona yapılamaması ilkesi.
Yetkili kullanıcıların sistem yapılandırması ve kayıtları yönettiği alan.
Yetkili destek kullanıcısının audit altında başka kullanıcı görünümüyle sistemi incelemesi.
Giriş, yetki ve kritik işlemlerin kim-zaman-ne bilgisiyle kaydı.
Başarısız giriş, rol değişimi veya şüpheli trafik gibi güvenlik olayı.
Verinin ağda TLS ile şifrelenmesi.
Diskte veya veritabanında saklanan verinin şifrelenmesi.
Şifreleme ve çözme için aynı gizli anahtarın kullanılması.
Public ve private key çiftinin kullanıldığı kriptografi.
Paylaşılabilen ve doğrulama/şifreleme işlemlerinde kullanılan anahtar.
Gizli tutulması gereken imzalama veya çözme anahtarı.
Veriyi tek yönlü sabit uzunluklu özete dönüştürme.
- HMACO
Gizli anahtarla mesaj bütünlüğü ve kaynağını doğrulayan hash tabanlı kod.
Verinin belirli private key sahibi tarafından imzalandığını kanıtlar.
Kriptografik anahtarları kontrollü aralıklarla yenileme.
Parola, API anahtarı veya private key gibi gizli yapılandırma değeri.
Gizli bilginin Git, log, frontend veya hata mesajıyla açığa çıkması.
Web uygulama güvenliği için rehber ve risk listeleri üreten topluluk.
Sistemin varlık, saldırgan, giriş noktası ve tehditlerini tasarım aşamasında analiz etme.
Bir saldırganın sisteme erişebileceği tüm giriş noktaları ve bileşenler.
Saldırganın kullanabileceği güvenlik zayıflığı.
Bir zafiyeti kullanarak beklenmeyen davranış elde etme yöntemi.
Güvenlik veya hata düzeltmesi içeren yazılım güncellemesi.
- CVEO
Kamuya açıklanan güvenlik açıklarına verilen standart kimlik.
Kullanılan üçüncü parti pakette bulunan güvenlik açığı.
- SCAO
Proje bağımlılıklarını bilinen zafiyetlere karşı tarama.
- SASTO
Kaynak kodu çalıştırmadan güvenlik açığı desenlerine karşı analiz etme.
- DASTO
Çalışan uygulamayı dışarıdan güvenlik testine tabi tutma.
Yetkili uzmanların gerçek saldırı teknikleriyle sistem güvenliğini sınaması.
Kontrolsüz girdinin SQL sorgusuna komut olarak karışması.
SQL injection'ı önlemek için veriyi sorgudan ayrı parametre olarak gönderme.
- XSST
Saldırganın başka kullanıcının tarayıcısında zararlı script çalıştırması.
Zararlı içeriğin veritabanında saklanıp kullanıcılara gösterilmesi.
Zararlı girdinin request üzerinden yanıta doğrudan yansıtılması.
Güvensiz istemci JavaScript'inin DOM'a zararlı veri yazması.
Kullanıcı verisini HTML, attribute veya JavaScript bağlamına uygun kaçışla gösterme.
Tarayıcıda hangi script, stil ve kaynakların çalışabileceğini sınırlayan header.
- CSRFT
Giriş yapmış kullanıcının tarayıcısına onun isteği gibi zararlı işlem yaptırılması.
Form veya isteğin uygulama tarafından üretildiğini doğrulayan rastgele değer.
- SSRFİ
Sunucunun saldırgan tarafından seçilen iç veya dış URL'ye istek yapmaya zorlanması.
Kontrolsüz URL parametresiyle kullanıcıyı zararlı domaine yönlendirme açığı.
../ gibi yollarla izin verilen klasör dışındaki dosyalara erişme saldırısı.
Kullanıcı girdisinin işletim sistemi komutuna kontrolsüz eklenmesi.
Yüklenen dosyanın tür, içerik veya konum kontrolü olmadan çalıştırılabilmesi.
Dosyanın beyan edilen ve gerçek içerik türünü doğrulama.
Yüklenen dosyayı zararlı yazılım motoruyla tarama.
Belirli kimlik veya IP'nin kısa sürede yapabileceği istek sayısını sınırlama.
Çok sayıda parola veya kod deneyerek giriş yapmaya çalışma.
Başka sızıntılardan alınan kullanıcı-parola çiftlerini deneme saldırısı.
Çok sayıda başarısız girişten sonra hesabı geçici kilitleme.
İşlemi insanın yaptığını doğrulamaya çalışan test veya risk sistemi.
Otomatik kötüye kullanım trafiğini tespit edip sınırlar.
Güvenilmeyen origin'lere credential veya hassas API erişimi verilmesi.
Tarayıcı güvenlik davranışlarını belirleyen HTTP response header'ları.
- HSTSO
Tarayıcıya domain için yalnızca HTTPS kullanmasını söyleyen header.
Tarayıcının MIME türünü tahmin etmesini engelleyen header.
Sayfayı görünmez iframe içinde gösterip kullanıcıya başka işlem yaptırma saldırısı.
CSP içinde sayfanın hangi origin'lerce iframe'e alınabileceğini belirler.
Kimlik, finans, sağlık veya özel erişim gibi korunması gereken veri.
- PIIO
Bir kişiyi doğrudan veya dolaylı tanımlayabilen kişisel veri.
Hassas verinin bir bölümünü kullanıcı veya loglarda gizleme.
Hassas bilgiyi çıktıdan tamamen çıkarma veya kapatma.
Yalnızca gerçekten gerekli kişisel veriyi toplama ve saklama ilkesi.
Yedeklerin şifreli, erişimi kısıtlı ve geri yüklenebilir tutulması.
Güvenlik olaylarını yeterli ayrıntıyla ve değiştirilemez biçimde kaydetme.
Güvenlik olayını tespit etme, sınırlama, temizleme ve raporlama süreci.
| Kavram | Seviye | Kısa açıklama |
|---|---|---|
| Identity | T | Bir kullanıcı, servis veya cihazı sistem içinde benzersiz olarak temsil eden kimlik. |
| Authentication | T | Bir kullanıcının iddia ettiği kişi olduğunu doğrulama işlemi. |
| Authorization | T | Doğrulanmış kimliğin hangi kaynak ve işlemlere erişebileceğini belirleme. |
| Credential | T | Kimliği kanıtlamak için kullanılan parola, token, sertifika veya anahtar. |
| Username | T | Kullanıcı hesabını tanımlayan giriş adı. |
| Email Login | T | Kullanıcı hesabına e-posta adresiyle giriş yöntemi. |
| Password | T | Kullanıcının bildiği gizli kimlik doğrulama değeri. |
| Password Hash | T | Parolanın tek yönlü algoritmayla geri çevrilemez özete dönüştürülmüş hâli. |
| Salt | O | Aynı parolaların farklı hash üretmesi için her parolaya eklenen rastgele veri. |
| bcrypt | O | Parola saklamak için maliyeti ayarlanabilen yavaş hash algoritması. |
| Argon2 | O | Bellek ve işlem maliyeti ayarlanabilen modern parola hash algoritması. |
| Password Policy | T | Minimum uzunluk, yasaklı parola ve tekrar kullanım gibi parola kuralları. |
| Password Reset | T | Kullanıcının doğrulanmış kanal üzerinden yeni parola belirlemesi süreci. |
| Reset Token | O | Tek kullanımlık ve süreli parola sıfırlama anahtarı. |
| Email Verification | T | Hesabın e-posta adresine erişimin doğrulanması. |
| MFA | O | Kimlik doğrulamada birden fazla bağımsız faktör kullanma. |
| 2FA | T | Parolaya ek olarak ikinci doğrulama adımı kullanma. |
| TOTP | O | Authenticator uygulamalarının zaman tabanlı tek kullanımlık kod standardı. |
| OTP | T | Bir kez veya kısa süre kullanılabilen doğrulama kodu. |
| Recovery Code | O | İkinci faktöre erişim kaybolduğunda kullanılabilen yedek kod. |
| Passkey | O | Public key kriptografisiyle parola yerine cihaz tabanlı giriş yöntemi. |
| WebAuthn | İ | Tarayıcı ve authenticator arasında phishing'e dayanıklı kimlik doğrulama standardı. |
| Biometric Authentication | O | Parmak izi veya yüz gibi biyometrik doğrulamayı cihaz üzerinden kullanma. |
| Session-based Auth | T | Sunucuda oturum kaydı, tarayıcıda session id cookie'si kullanan giriş modeli. |
| Session ID | T | Sunucu tarafındaki oturum kaydını tanımlayan rastgele değer. |
| Session Store | O | Aktif oturumların Redis veya veritabanında tutulduğu depo. |
| Session Expiration | T | Oturumun belirli süre sonunda geçersiz olması. |
| Idle Timeout | O | Kullanıcı etkin değilken belirli süre sonunda oturumu kapatma. |
| Absolute Timeout | O | Etkinlik olsa da oturumun maksimum yaşam süresi. |
| JWT | O | Header, payload ve signature bölümlerinden oluşan imzalı token formatı. |
| JWT Payload | O | Token içindeki claim verileri; şifrelenmiş olmak zorunda değildir. |
| JWT Signature | O | Token'ın değiştirilmediğini ve beklenen anahtarla üretildiğini doğrular. |
| Claim | O | Token içinde kullanıcı, yetki veya süre hakkında taşınan bilgi. |
| exp Claim | O | Token'ın sona erme zamanını belirtir. |
| iss Claim | O | Token'ı yayınlayan sistemi belirtir. |
| aud Claim | O | Token'ın hangi hedef servis için üretildiğini belirtir. |
| Token Revocation | İ | Süresi dolmadan token veya oturumun geçersiz kılınması. |
| Refresh Token Rotation | İ | Her yenilemede eski refresh token'ı iptal edip yenisini üretme. |
| RBAC | O | Yetkileri kullanıcı yerine rol grupları üzerinden yönetme modeli. |
| Role | T | Admin, editör veya personel gibi izin grubu. |
| Permission | T | Müşteri görüntüle veya fatura sil gibi belirli işlem yetkisi. |
| Role Assignment | T | Kullanıcıya bir veya birden fazla rol bağlama işlemi. |
| Permission Matrix | O | Roller ile kaynak-işlem izinlerini tablo hâlinde gösteren yapı. |
| ABAC | İ | Yetki kararını kullanıcı, kaynak ve ortam attribute'larına göre verme modeli. |
| Policy | O | Bir erişim kararının koşul ve sonuçlarını tanımlayan kural. |
| Ownership Check | O | Kullanıcının yalnızca kendisine ait kaynağa erişmesini doğrulama. |
| Tenant Isolation | İ | Bir müşterinin verisinin başka tenant tarafından görülememesini garanti etme. |
| Least Privilege | T | Kullanıcı ve servislerin yalnızca ihtiyaç duyduğu minimum yetkiye sahip olması. |
| Separation of Duties | O | Riskli bir işlemin tek kişi tarafından baştan sona yapılamaması ilkesi. |
| Admin Panel | T | Yetkili kullanıcıların sistem yapılandırması ve kayıtları yönettiği alan. |
| Impersonation | O | Yetkili destek kullanıcısının audit altında başka kullanıcı görünümüyle sistemi incelemesi. |
| Audit Trail | O | Giriş, yetki ve kritik işlemlerin kim-zaman-ne bilgisiyle kaydı. |
| Security Event | O | Başarısız giriş, rol değişimi veya şüpheli trafik gibi güvenlik olayı. |
| Encryption in Transit | T | Verinin ağda TLS ile şifrelenmesi. |
| Encryption at Rest | O | Diskte veya veritabanında saklanan verinin şifrelenmesi. |
| Symmetric Encryption | O | Şifreleme ve çözme için aynı gizli anahtarın kullanılması. |
| Asymmetric Encryption | O | Public ve private key çiftinin kullanıldığı kriptografi. |
| Public Key | O | Paylaşılabilen ve doğrulama/şifreleme işlemlerinde kullanılan anahtar. |
| Private Key | O | Gizli tutulması gereken imzalama veya çözme anahtarı. |
| Hashing | T | Veriyi tek yönlü sabit uzunluklu özete dönüştürme. |
| HMAC | O | Gizli anahtarla mesaj bütünlüğü ve kaynağını doğrulayan hash tabanlı kod. |
| Digital Signature | O | Verinin belirli private key sahibi tarafından imzalandığını kanıtlar. |
| Key Rotation | O | Kriptografik anahtarları kontrollü aralıklarla yenileme. |
| Secret | T | Parola, API anahtarı veya private key gibi gizli yapılandırma değeri. |
| Secret Leak | T | Gizli bilginin Git, log, frontend veya hata mesajıyla açığa çıkması. |
| OWASP | T | Web uygulama güvenliği için rehber ve risk listeleri üreten topluluk. |
| Threat Modeling | İ | Sistemin varlık, saldırgan, giriş noktası ve tehditlerini tasarım aşamasında analiz etme. |
| Attack Surface | O | Bir saldırganın sisteme erişebileceği tüm giriş noktaları ve bileşenler. |
| Vulnerability | T | Saldırganın kullanabileceği güvenlik zayıflığı. |
| Exploit | O | Bir zafiyeti kullanarak beklenmeyen davranış elde etme yöntemi. |
| Patch | T | Güvenlik veya hata düzeltmesi içeren yazılım güncellemesi. |
| CVE | O | Kamuya açıklanan güvenlik açıklarına verilen standart kimlik. |
| Dependency Vulnerability | T | Kullanılan üçüncü parti pakette bulunan güvenlik açığı. |
| SCA | O | Proje bağımlılıklarını bilinen zafiyetlere karşı tarama. |
| SAST | O | Kaynak kodu çalıştırmadan güvenlik açığı desenlerine karşı analiz etme. |
| DAST | O | Çalışan uygulamayı dışarıdan güvenlik testine tabi tutma. |
| Penetration Test | İ | Yetkili uzmanların gerçek saldırı teknikleriyle sistem güvenliğini sınaması. |
| SQL Injection | T | Kontrolsüz girdinin SQL sorgusuna komut olarak karışması. |
| Parameterized Query | T | SQL injection'ı önlemek için veriyi sorgudan ayrı parametre olarak gönderme. |
| XSS | T | Saldırganın başka kullanıcının tarayıcısında zararlı script çalıştırması. |
| Stored XSS | O | Zararlı içeriğin veritabanında saklanıp kullanıcılara gösterilmesi. |
| Reflected XSS | O | Zararlı girdinin request üzerinden yanıta doğrudan yansıtılması. |
| DOM-based XSS | İ | Güvensiz istemci JavaScript'inin DOM'a zararlı veri yazması. |
| Output Encoding | T | Kullanıcı verisini HTML, attribute veya JavaScript bağlamına uygun kaçışla gösterme. |
| Content Security Policy | O | Tarayıcıda hangi script, stil ve kaynakların çalışabileceğini sınırlayan header. |
| CSRF | T | Giriş yapmış kullanıcının tarayıcısına onun isteği gibi zararlı işlem yaptırılması. |
| CSRF Token | T | Form veya isteğin uygulama tarafından üretildiğini doğrulayan rastgele değer. |
| SameSite Cookie | O | Cookie'nin cross-site isteklerde gönderilme davranışını sınırlar. |
| SSRF | İ | Sunucunun saldırgan tarafından seçilen iç veya dış URL'ye istek yapmaya zorlanması. |
| Open Redirect | O | Kontrolsüz URL parametresiyle kullanıcıyı zararlı domaine yönlendirme açığı. |
| Path Traversal | O | ../ gibi yollarla izin verilen klasör dışındaki dosyalara erişme saldırısı. |
| Command Injection | İ | Kullanıcı girdisinin işletim sistemi komutuna kontrolsüz eklenmesi. |
| File Upload Vulnerability | O | Yüklenen dosyanın tür, içerik veya konum kontrolü olmadan çalıştırılabilmesi. |
| MIME Validation | O | Dosyanın beyan edilen ve gerçek içerik türünü doğrulama. |
| Malware Scan | O | Yüklenen dosyayı zararlı yazılım motoruyla tarama. |
| Rate Limiting | O | Belirli kimlik veya IP'nin kısa sürede yapabileceği istek sayısını sınırlama. |
| Brute Force | T | Çok sayıda parola veya kod deneyerek giriş yapmaya çalışma. |
| Credential Stuffing | O | Başka sızıntılardan alınan kullanıcı-parola çiftlerini deneme saldırısı. |
| Account Lockout | O | Çok sayıda başarısız girişten sonra hesabı geçici kilitleme. |
| CAPTCHA | T | İşlemi insanın yaptığını doğrulamaya çalışan test veya risk sistemi. |
| Bot Protection | O | Otomatik kötüye kullanım trafiğini tespit edip sınırlar. |
| CORS Misconfiguration | O | Güvenilmeyen origin'lere credential veya hassas API erişimi verilmesi. |
| Security Header | T | Tarayıcı güvenlik davranışlarını belirleyen HTTP response header'ları. |
| HSTS | O | Tarayıcıya domain için yalnızca HTTPS kullanmasını söyleyen header. |
| X-Content-Type-Options | O | Tarayıcının MIME türünü tahmin etmesini engelleyen header. |
| Clickjacking | O | Sayfayı görünmez iframe içinde gösterip kullanıcıya başka işlem yaptırma saldırısı. |
| Frame Ancestors | O | CSP içinde sayfanın hangi origin'lerce iframe'e alınabileceğini belirler. |
| Sensitive Data | T | Kimlik, finans, sağlık veya özel erişim gibi korunması gereken veri. |
| PII | O | Bir kişiyi doğrudan veya dolaylı tanımlayabilen kişisel veri. |
| Data Masking | O | Hassas verinin bir bölümünü kullanıcı veya loglarda gizleme. |
| Redaction | O | Hassas bilgiyi çıktıdan tamamen çıkarma veya kapatma. |
| Data Minimization | O | Yalnızca gerçekten gerekli kişisel veriyi toplama ve saklama ilkesi. |
| Backup Security | O | Yedeklerin şifreli, erişimi kısıtlı ve geri yüklenebilir tutulması. |
| Security Logging | O | Güvenlik olaylarını yeterli ayrıntıyla ve değiştirilemez biçimde kaydetme. |
| Incident Response | İ | Güvenlik olayını tespit etme, sınırlama, temizleme ve raporlama süreci. |
Bölüm uygulamaları
Bu bölümü bitirmeden önce şunları deneyin veya açıklayın.
- Bir CRM için admin, satış personeli, muhasebe ve destek rollerinden oluşan permission matrix hazırlayın.
- Login endpoint'i için brute force, session, cookie ve password hash güvenlik önlemlerini listeleyin.
- XSS, CSRF, SQL injection ve SSRF için birer kötü örnek ve güvenli çözüm yazın.