Güvenlik Politikası / Security Policy
Son güncelleme: 04.06.2026
GÜVENLIK POLİTİKASI / SECURITY POLICY
TÜRKÇE / TURKISH
GÜVENLIK POLİTİKASI
Son Güncelleme: 29 Nisan 2026
1. GİRİŞ
Bu Güvenlik Politikası, Dersin Kelimeleri uygulaması kullanıcılarının kişisel verilerinin ve sistem güvenliğinin nasıl korunduğunu açıklar. Uygulamada güvenlik, en yüksek önceliklerden biridir ve tüm teknik, örgütsel ve yönetimsel düzeyde önlemler alınmıştır.
2. VERI ŞIFRELEMESI VE İLETİM GÜVENLİĞİ
2.1 İletim Sırasında Şifreleme (In Transit)
HTTPS/TLS Protokolü: - Tüm sunucu-istemci iletişimi HTTPS protokolü ile şifrelenmiştir - TLS 1.2 veya üzeri versiyonları kullanılır - SSL/TLS sertifikaları düzenli olarak güncellenmiş ve geçerlidir - Sertifika pinningleme (Certificate Pinning) uygulandığında yerel güvenlik artar
API İletişimi: - POST, PUT, DELETE işlemleri için tüm form verileri şifrelidir - Hassas bilgiler (şifre, token, kişisel veriler) şifreli başlıklar kullanılarak gönderilir - İstek/Yanıt gövdesi (Request/Response Body) JSON formatında şifrelidir
Kimlik Doğrulama Tokenları: - JWT (JSON Web Token) tokenları HTTPS başlıkları aracılığıyla gönderilir - Token geçerliliği sunucu tarafında doğrulanır - Token süresi sınırlanmıştır (30-60 dakika)
2.2 Depolandığında Şifreleme (At Rest)
JWT Tokenları:
- iOS: Apple Keychain Services kullanan flutter_secure_storage ile şifrelenir
- Android: Android KeyStore ve EncryptedSharedPreferences kullanan flutter_secure_storage ile şifrelenir
- Depolama Yönetimi: Sistem şifrelemesi (TEE - Trusted Execution Environment) tarafından korunur
Parolalar: - Sunucu tarafında bcrypt, scrypt veya PBKDF2 gibi güçlü algoritmatlarla şifrelenir - Parola hash fonksiyonları en az 10 işlem turuna sahiptir (salt included) - Parolalar hiçbir zaman uygulamada plain text olarak saklanmaz
Profil Resimleri: - Güvenli sunucu ortamında depolanır - Dosya sistem izinleri ile koruma altınası alınır - CDN üzerinden sunulursa, HTTPS via şifrelidir
SharedPreferences Verileri: - Android 12 ve üzeri: Otomatik olarak şifrelenmiş depolamaya yönlendirilir - iOS: iCloud Keychain veya encrypted SharedPreferences kullanılır - Şifreli anahtar (encryption key) cihazın güvenlik işlemi (TEE) tarafından yönetilir
Veritabanı: - Sunucu veritabanı şifreleme (Database Encryption at Rest) etkindir - Örneğin: MySQL Transparent Data Encryption (TDE), PostgreSQL pgcrypto
3. KİMLİK DOĞRULAMA VE ERIŞIM KONTROLÜ
3.1 Parola Güvenliği
Parola Gereksinimleri: - Minimum uzunluk: 8 karakter - Karmaşıklık: En az bir büyük harf, bir küçük harf, bir rakam, bir özel karakter - Ortak parolaların (top 100.000 parola) kontrolü yapılır - Parola tekrarı (previous password reuse) engellenir
Parola İletişimi: - Şifre alanları UI'da maskelenmiştir (gözükmeyen karakterler) - Parola hiçbir zaman log dosyalarında kaydedilmez - Şifre sıfırlama e-posta bağlantıları tek kullanımlık tokenlerdir
3.2 JWT Token Yönetimi
Token İçeriği: - Kullanıcı ID (UID) - E-posta adresi - Yetki düzeyleri (claims) - Veriliş zamanı (iat) - Sona erme zamanı (exp)
Token Süresi: - Access Token: 30-60 dakika geçerli - Refresh Token: 7-30 gün geçerli (opsiyonel) - Token Rotation: Belirli işlemlerden sonra yenilenir
Token Doğrulama: - Her istek sunucu tarafında doğrulanır - Signature doğrulanır (Secret Key ile) - Expiration zamanı kontrol edilir - İmza geçersiz ise isteğe 401 Unauthorized dönülür
3.3 Çoklu Faktörlü Kimlik Doğrulama (MFA)
Uygulamada şu kimlik doğrulama yöntemleri desteklenir: - E-posta/Parola: İlk faktör - Google Sign-In: OAuth 2.0 (isteğe bağlı) - Apple Sign-In: OAuth 2.0 (iOS için isteğe bağlı) - Biyometrik Kimlik Doğrulama: Parmak izi / Yüz tanıma (cihazda, opsiyonel)
OAuth Güvenliği: - Google ve Apple'ın resmi SDK'ları kullanılır - ID Token sunucu tarafında doğrulanır - State parameter (CSRF koruması) kullanılır - Redirect URI sınırlandırılmıştır
3.4 Oturum Yönetimi
Oturum Kurma: - Login başarılı olunca JWT token oluşturulur - Token cihazda güvenli depolamaya yazılır - Refresh token (varsa) ayrı alanda saklanır
Oturum Sonlandırma: - Logout işleminde token silinir - Sunucu tarafında token blacklist'e eklenebilir - Cihazdan tamamen kaldırılır
Oturum Zaman Aşımı: - Token süresi dolduktan sonra yenileme gerekir - Yenileme başarısız olursa kullanıcı tekrar giriş yapar - 30 gün inaktivite sonrası oturum kapatılabilir
4. AĞDA TRANSMISYON GÜVENLIĞI
4.1 Protokol ve Şifreleme Standartları
HTTPS Yapılandırması: - TLS Version: 1.2 minimum (1.3 tercih) - Cipher Suites: Yalnızca güçlü cipher'lar (AES-256, ChaCha20) - Key Exchange: Forward Secrecy (PFS) etkin (ECDHE, DHE) - Weak ciphers devre dışı (RC4, DES vb.)
HSTS (HTTP Strict Transport Security): - HSTS header etkin: Strict-Transport-Security: max-age=31536000; includeSubDomains - Tarayıcıya HTTPS zorunluluğunu söyler - Man-in-the-middle (MITM) saldırılarını önler
4.2 API İstek Güvenliği
İstek Doğrulama: - Content-Type: application/json doğrulanır - Payload boyutu sınırsı kontrol edilir (örn: max 10 MB) - JSON Schema doğrulaması yapılır
Rate Limiting: - IP başına dakikada maksimum istek sayısı sınırlanır (örn: 100 req/min) - Kullanıcı başına dakikada sınır (örn: 1000 req/min) - Aşılması durumunda 429 Too Many Requests dönülür
CSRF Koruması: - CSRF token her form sunuşunda verilir - Token doğrulanır (Request origin'i kontrol edilir) - SameSite cookie attribute kullanılır (SameSite=Strict)
4.3 Firewall ve DDoS Koruması
Firewall Kuralları: - Yalnızca gerekli portlar açık (443/HTTPS, 80/HTTP yönlendirmesi) - SSH erişimi sınırlanmış IP'lerden (admin panel) - Veritabanı erişimi uygulama sunucularından yalnızca
DDoS Koruması: - DDoS mitigation hizmeti (CloudFlare, AWS Shield vb.) - Traffic filtering ve rate limiting - Anomali algılama sistemi
5. KÖTÜye KULLANIM ALGILAMA VE KORUNMA
5.1 Kötüye Kullanım Analizi
Şüpheli Etkinlik Tespiti: - Başarısız giriş denemelerinin izlenmesi (5 başarısız = geçici kilitleme) - Olağandışı lokasyon değişiklikleri - Hızlı API istekleri (rate limiting ile) - Toplu veri indirme denemeleri
Otomatik Tepki: - İllegal IP'ler geçici/kalıcı engellenir - Hesap geçici kilitlenir (15-60 dakika) - Şüpheli e-postalar gözden geçirme için bayrak edilir - Sistemci uyarısı gönderilir
5.2 SQL Injection Koruması
SQL Sorguları: - Tüm sorgular parametreli (Prepared Statements) kullanılır - ORM kütüphaneleri kullanılır (Eloquent, SQLAlchemy vb.) - Girdi doğrulama (Input Validation) yapılır - SQL ifadeleri escaping ile korunur
Veri Doğrulama: - Tip doğrulaması (string, integer, boolean vb.) - Boş değer (null) kontrolleri - Regex pattern matching - Whitelist yöntemi (izin verilenler)
5.3 Injection Saldırılarına Karşı Koruma
XSS (Cross-Site Scripting) Koruması: - Çıktı HTML encoding'e tabi tutulur - JavaScript template literals escape edilir - İçerik Security Policy (CSP) header'ları kullanılır - User-generated content sanitization yapılır
Komut Injection Koruması: - System komutları çalıştırılmaz user input ile - Shell_exec, Exec vb. fonksiyonlar kısıtlanır - Parametreler escaping yapılır
6. İNDİRİLEN VERİ VE DOSYA GÜVENLIĞI
6.1 Dosya Yüklemesi (Upload)
Profil Resimleri: - Dosya türü kontrolü: JPEG, PNG, WebP yalnızca - Dosya boyutu sınırı: 5 MB maksimum - Gerçek dosya imzası doğrulanır (magic bytes) - Virüs tarama yapılır (ClamAV vb.)
Depolama:
- Yüklenen dosyalar web root dışında saklanır
- Dosya adları rasgele oluşturulur (example: abc123def456.jpg)
- Orijinal dosya adı sunucuda tutulmaz
Sunulması: - Dosyalar doğrudan URL'den indirilmez - Dosya sunumu authorized endpoint'ten geçer - Access control yapılır (sadece sahip görebilir)
6.2 Resim Önbelleğe Alınması
Cihazda Depolama:
- cached_network_image plugin öncellekler resimler
- Önbellek dizini uygulama private alanında
- İçerik HTTPS kaynağından doğrulanır
Önbellek Yönetimi: - Maksimum önbellek boyutu sınırlanır (100 MB) - Eski dosyalar otomatik silinir (7 gün) - Logout sonrası cache temizlenebilir
7. TERCÜ TARAF ENTEGRASYONLARI GÜVENLIĞI
7.1 Firebase Cloud Messaging (FCM)
Token Güvenliği: - FCM token uygulamada güvenli depolamaya yazılır - Token sunucuya HTTPS ile gönderilir - Token süresi dolduktan sonra otomatik yenilenir - Kullanıcı çıkış yapınca token silinir
Notification Güvenliği: - Notification içeriği şifreli kanal üzerinden gönderilir - Notification yükü maksimum boyut sınırı vardır - Sensitive veriler notification'da gönderilmez - Başlık ve gövde sadece uyarı/bilgi içerir
7.2 OAuth Sağlayıcıları (Google, Apple)
Google Sign-In Güvenliği: - Resmi Google SDK kullanılır - Web Client ID ile doğrulama yapılır - ID Token signature doğrulanır - nonce parameter (replay saldırısı önleme) kullanılır
Apple Sign-In Güvenliği: - Sign in with Apple resmi SDK kullanılır - Private Email Relay desteklenir - JWT signature doğrulanır - Ecosystem ecosystem authentication kullanılır
7.3 Bağımsız Audit
- Üçüncü taraf OAuth sağlayıcıları kendi güvenlik denetimine tabidir
- Bağlantılar HTTPS ile korunur
- Token'lar güvenli storage'da tutulur
8. BUG BOUNTY VE GÜVENLİK AÇILIŞTIRMASI
8.1 Güvenlik Açı Bildirimi
Güvenlik açığını bulursanız, sorumlu şekilde bildirin:
İletişim: - E-posta: bilgi@365gunarapca.com - Konu: [SECURITY] - Bulduğunuz Açık
Bildirim İçermelidir: - Açığın açıklaması - Etki ve ciddiyet (Low, Medium, High, Critical) - Proof of Concept (opsiyonel) - İlgili URL veya endpoint
Yanıt Süreleri: - Critical: 24 saat içinde - High: 48 saat içinde - Medium: 7 gün içinde - Low: 14 gün içinde
8.2 Sorumlu Açıklama (Responsible Disclosure)
Politika: - Açığı herkese açık hale getirmeden önce bize bildiriniz - Açığın düzeltilmesi için makul zaman verin (minimum 30 gün) - Açığın detaylarını kamuya açıklamayın - Sorumlu bildireni kredi ve/veya ödülü alır
Onay: - Açık alınca, onay e-postası gönderilir - Düzeltme progresini bilgilendiririz - Yayından sonra açığı kamuya açılır (36+ ay sonra)
9. VERI İHLALİ VE İNCİDENT YÖNETİMİ
9.1 İhlal Bildirimi Prosedürü
Bir veri ihlali meydana gelirse:
1. Tespit Aşaması (1-2 saat): - Anormal aktivite tespit edilir - İhlal kapsamı ve türü belirlenir - Etkilenen veriler tanımlanır
2. Zarar Sınırlandırma (2-6 saat): - Etkilenen hesaplar geçici kilitlenir - Saldırı kaynağı yalıtılır - Backup'lardan restore yapılır (opsiyonel) - Firewall kuralları güncellenir
3. Soruşturma Aşaması (1-7 gün): - Sistem log'ları analiz edilir - Saldırı yöntemi belirlenir - Tekrar olması için başka zafiyetler aranır - Ön rapor hazırlanır
4. Bildirim Aşaması (72 saat içinde): - Etkilenen kullanıcılara e-posta gönderilir - Neler olduğu açıklanır - Alınan önlemler anlatılır - İletişim bilgileri verilir
5. Kamuya Duyuru (gerekirse): - KVKK Kurulu'na bildirim yapılır - Medya basın açıklaması (ciddi durumda) - Proje yönetimi güncellenir
9.2 Etkilenen Kullanıcı Bildirimi
Bildirim İçeriği: - İhlalin türü (örn: Unauthorized access to user data) - İhlal tarihi ve saati - Etkilenen veriler (örn: Kullanıcı adı, e-posta) - Etkilenen kullanıcı sayısı - Alınan koruyucu önlemler - Kullanıcıların yapması gereken (şifre değiştirme vb.) - İletişim bilgileri
Bildirim Kanalları: - E-posta (birincil) - Uygulama içi bildirim (ikincil) - SMS (kritik durumlarda)
9.3 İncident Raporu
Olay soruşturmasından sonra: - Kapsamlı rapor hazırlanır - Kök sebep analizi yapılır - Önleme ve düzeltme önerileri sunulur - Sistem hardening yapılır
10. YAZILIM GÜVENLİĞİ VE BAĞIMLILIK YÖNETİMİ
10.1 Kod Gözden Geçirme
Kod Review Süreci: - Tüm kod değişiklikleri en az 2 kişi tarafından gözden geçirilir - Güvenlik açıkları için kontrol edilir - Test coverage kontrol edilir (minimum %80) - Code style ve best practices kontrol edilir
Otomatik Tarama: - SAST (Static Application Security Testing) araçları kullanılır - Linting ve code analysis araçları (SonarQube vb.) - Dependency vulnerability scanning
10.2 Bağımlılık Yönetimi
Güncellemeler: - Tüm dependencies düzenli olarak güncellenecektir - Güvenlik patchleri ivedilikle uygulanır - Breaking changes testi yapılır - Staging ortamında test edilir
Vulnerability Tarama: - npm audit, cargo audit, pip audit vb. araçlar kullanılır - Bilinen zafiyetler tarandı - CVSS skoru yüksek olan patchler hemen uygulanır
10.3 Sürüm Kontrolü
Git Güvenliği:
- .git dizini sunucuda gözükmez
- Credentials (SSH keys, tokens) .gitignore'da
- Commit mesajları kontrol edilir
- Force push koruması vardır
11. SUNUCU VE ALTYAPI GÜVENLİĞİ
11.1 İşletim Sistemi Güvenliği
Linux Hardening: - Kernel security patches uygulanmıştır - Gereksiz servisler devre dışı - SELinux veya AppArmor etkin (opsiyonel) - Firewall kuralları katı
Dosya Sistem İzinleri:
- Web root'un başında olan dosyalar 644 (rw-r--r--)
- Dizinler 755 (rwxr-xr-x)
- Şifreli dosyalar 600 (rw-------)
- Cron scripts 700 (rwx------)
11.2 Sunucu Erişimi
SSH Güvenliği: - SSH anahtarı (key-based) kullanılır (şifre yok) - Root login devre dışı - Varsayılan port 22 kullanılmaz - Failed login attempt sınırı - IP whitelist (opsiyonel)
Sudo Kullanımı: - Sudo yalnızca belirli komutlar için (sudoers dosyası) - Sudo aktivitesi log'lanır - Passwordless sudo (trusted hosts için opsiyonel)
11.3 Sistem Monitoring ve Logging
Log Dosyaları: - Tüm sistem ve uygulama log'ları merkezi yerde toplanır - Log dosyaları 90 gün saklanır - Log dosyaları yazma koruması vardır - Düzenli log rotasyonu yapılır
Monitoring: - Sistem durumu monitoring (CPU, Memory, Disk) - Ağ trafik monitoring - Başarısız login denemelerinin monitoring - Anormal aktivite uyarısı
11.4 Yedekleme ve Afet Kurtarma
Yedekleme: - Günlük veritabanı yedeklemesi yapılır - Yedeklemeler coğrafi olarak dağılmış yerlerde tutulur - Yedeklemeler şifrelidir ve çevrimdışı saklanır - Restore süresi yönetiminin kontrol altında
Afet Kurtarma (DR): - DR planı hazırlanmıştır (hizmet kesinti 4 saatin altında) - RTO (Recovery Time Objective): 4 saat - RPO (Recovery Point Objective): 1 saat - Düzenli DR drilleri yapılır
12. UYGULAMADA GÜVENLIK ÖZELLIKLERI
12.1 Yerel Depolama Güvenliği
Secure Storage Kullanımı:
- JWT tokens flutter_secure_storage ile saklanır
- SharedPreferences Android 12+ için şifrelenmiş
- Cihaz kilidinin açılması gerekir (optional enforcement)
Geçici Bellek: - Hassas veriler (şifre, token) RAM'de sadece işlem süresi kadar kalır - Kullanılıp bittikten sonra memory silinir - String buffer'ları üzerine yazılır
12.2 Uygulama Koruması
Code Obfuscation: - Release build'inde code obfuscate edilir - ProGuard (Android) / Code Obfuscation (iOS) kullanılır - String encryption (sensitive string'ler) - API key'ler encrypted ve runtime'da decrypt edilir
Debuggability Devre Dışı: - Production build'inde debugger devre dışı - Console log'ları production'da minimize - Network interceptor'lar sadece dev build'inde
12.3 Biyometrik Güvenlik
Parmak İzi / Yüz Tanıma: - Cihazın native biyometrik API'si kullanılır - Biyometrik veri cihazda kalır (asla sunucuya gönderilmez) - Başarısız deneme sınırı vardır - Fallback şifre koruması vardır
13. PERSONELİN EĞİTİMİ VE SORUMLULUĞU
13.1 Güvenlik Eğitimi
- Tüm personel OWASP Top 10 eğitimi alır
- Secure coding practices eğitimi yapılır
- Veri koruma ve gizlilik eğitimi (yıllık)
- Sosyal mühendislik farkındalık eğitimi
13.2 Erişim Kontrolü
- Personele minimum gerekli erişim (least privilege)
- Ayrılma sonrasında erişim hemen kesilir
- Yazılı NDA imzalı
- Audit log'ları personel erişimini kaydeder
14. TREHLİK DEĞERLENDİRMESİ
14.1 Tehdit Modeli
Tanımlanan Tehditler: - Unauthorized Access: Hesap hacklenme, credential stuffing - Data Breach: Veritabanı saldırısı, insider threat - Man-in-the-Middle: Network kesintisi, proxy saldırısı - Malware: Trojan, spyware, ransomware - Social Engineering: Phishing, pretexting - Denial of Service: DDoS, resource exhaustion
14.2 Risk Değerlendirmesi
Tehditler şiddet ve olasılığa göre değerlendirilir: - Critical: Immediate action required - High: Fix within 30 days - Medium: Fix within 90 days - Low: Fix within 1 year
15. YASAL UYUM
15.1 Uluslararası Standartlar
- ISO 27001: Bilgi güvenliği yönetim sistemi (uyumlu)
- OWASP Top 10: Web uygulama güvenliği tehditleri (ele alınan)
- PCI-DSS: Ödeme kartı güvenliği (uygun, kart işlemi yok)
15.2 Veri Koruma Kanunları
- KVKK (Türkiye): Kişisel Verileri Koruma Kanunu uyumlu
- GDPR (AB): Avrupa Birliği veri koruma yönetmeliği uyumlu
- COPPA: ABD çocuklar online gizlilik kanunu uyumlu
16. GÜVENLIK İLETİŞİM VE RAPORLAMA
Güvenlik Soruları: - Email: bilgi@365gunarapca.com
Düzenli Bilgilendirmeler: - Aylık güvenlik özeti (iç) - Üçer aylık dış denetim raporu - Yıllık güvenlik değerlendirmesi
ENGLISH / İNGİLİZCE
SECURITY POLICY
Last Updated: April 29, 2026
1. INTRODUCTION
This Security Policy describes how personal data and system security of Dersin Kelimeleri application users are protected. Security is one of the highest priorities in the application, and measures have been taken at all technical, organizational, and administrative levels.
2. DATA ENCRYPTION AND TRANSMISSION SECURITY
2.1 Encryption in Transit
HTTPS/TLS Protocol: - All server-client communication is encrypted with HTTPS protocol - TLS 1.2 or higher versions are used - SSL/TLS certificates are regularly updated and valid - Certificate pinning increases local security when implemented
API Communication: - All form data for POST, PUT, DELETE operations is encrypted - Sensitive information (passwords, tokens, personal data) is sent using encrypted headers - Request/Response body is encrypted in JSON format
Authentication Tokens: - JWT (JSON Web Token) tokens are sent through HTTPS headers - Token validity is verified on the server side - Token duration is limited (30-60 minutes)
2.2 Encryption at Rest
JWT Tokens:
- iOS: Encrypted with flutter_secure_storage using Apple Keychain Services
- Android: Encrypted with flutter_secure_storage using Android KeyStore and EncryptedSharedPreferences
- Storage Management: Protected by system encryption (TEE - Trusted Execution Environment)
Passwords: - Encrypted on the server side with strong algorithms like bcrypt, scrypt, or PBKDF2 - Password hash functions have at least 10 computation rounds (with salt) - Passwords are never stored in plain text in the application
Profile Pictures: - Stored in a secure server environment - Protected with file system permissions - Served via HTTPS if through CDN
SharedPreferences Data: - Android 12 and higher: Automatically directed to encrypted storage - iOS: Uses iCloud Keychain or encrypted SharedPreferences - Encryption key is managed by the device's security process (TEE)
Database: - Server database encryption at rest is enabled - For example: MySQL Transparent Data Encryption (TDE), PostgreSQL pgcrypto
3. AUTHENTICATION AND ACCESS CONTROL
3.1 Password Security
Password Requirements: - Minimum length: 8 characters - Complexity: At least one uppercase, one lowercase, one digit, one special character - Common passwords are checked (top 100,000 passwords) - Password reuse prevention is enforced
Password Communication: - Password fields are masked in the UI (hidden characters) - Passwords are never logged in log files - Password reset email links are single-use tokens
3.2 JWT Token Management
Token Content: - User ID (UID) - Email address - Permission levels (claims) - Issue time (iat) - Expiration time (exp)
Token Duration: - Access Token: Valid for 30-60 minutes - Refresh Token: Valid for 7-30 days (optional) - Token Rotation: Renewed after certain operations
Token Verification: - Each request is verified on the server side - Signature is verified (with Secret Key) - Expiration time is checked - Invalid signature returns 401 Unauthorized
3.3 Multi-Factor Authentication (MFA)
The application supports the following authentication methods: - Email/Password: First factor - Google Sign-In: OAuth 2.0 (optional) - Apple Sign-In: OAuth 2.0 (optional, iOS) - Biometric Authentication: Fingerprint / Face recognition (on-device, optional)
OAuth Security: - Official SDKs from Google and Apple are used - ID Token is verified on the server side - State parameter (CSRF protection) is used - Redirect URI is restricted
3.4 Session Management
Session Creation: - JWT token is created upon successful login - Token is written to secure storage on the device - Refresh token (if any) is stored separately
Session Termination: - Token is deleted during logout - Token can be added to server-side blacklist - Completely removed from device
Session Timeout: - After token duration expires, renewal is required - Failed renewal requires user to log in again - Inactivity for 30 days may trigger session termination
4. NETWORK TRANSMISSION SECURITY
4.1 Protocol and Encryption Standards
HTTPS Configuration: - TLS Version: Minimum 1.2 (1.3 preferred) - Cipher Suites: Only strong ciphers (AES-256, ChaCha20) - Key Exchange: Forward Secrecy (PFS) enabled (ECDHE, DHE) - Weak ciphers disabled (RC4, DES, etc.)
HSTS (HTTP Strict Transport Security): - HSTS header enabled: Strict-Transport-Security: max-age=31536000; includeSubDomains - Tells browser to enforce HTTPS - Prevents man-in-the-middle (MITM) attacks
4.2 API Request Security
Request Validation: - Content-Type: application/json is validated - Payload size is checked for limits (e.g., max 10 MB) - JSON Schema validation is performed
Rate Limiting: - Maximum requests per minute per IP (e.g., 100 req/min) - Per-user limits per minute (e.g., 1000 req/min) - Exceeded limits return 429 Too Many Requests
CSRF Protection: - CSRF token is provided with each form submission - Token is validated (request origin is checked) - SameSite cookie attribute is used (SameSite=Strict)
4.3 Firewall and DDoS Protection
Firewall Rules: - Only necessary ports are open (443/HTTPS, 80/HTTP redirect) - SSH access restricted to limited IPs (admin panel) - Database access only from application servers
DDoS Protection: - DDoS mitigation service (CloudFlare, AWS Shield, etc.) - Traffic filtering and rate limiting - Anomaly detection system
5. ABUSE DETECTION AND PROTECTION
5.1 Abuse Analysis
Suspicious Activity Detection: - Monitoring failed login attempts (5 failed = temporary lock) - Unusual location changes - Rapid API requests (with rate limiting) - Bulk data download attempts
Automatic Response: - Illegal IPs are temporarily/permanently blocked - Account is temporarily locked (15-60 minutes) - Suspicious emails are flagged for review - System administrator alert is sent
5.2 SQL Injection Protection
SQL Queries: - All queries use parameterized statements (Prepared Statements) - ORM libraries are used (Eloquent, SQLAlchemy, etc.) - Input validation is performed - SQL statements are protected with escaping
Data Validation: - Type validation (string, integer, boolean, etc.) - Null value checks - Regex pattern matching - Whitelist method (permitted values only)
5.3 Protection Against Injection Attacks
XSS (Cross-Site Scripting) Protection: - Output is subject to HTML encoding - JavaScript template literals are escaped - Content Security Policy (CSP) headers are used - User-generated content sanitization is performed
Command Injection Protection: - System commands are not executed with user input - Shell_exec, Exec functions are restricted - Parameters are escaped
6. DOWNLOADED DATA AND FILE SECURITY
6.1 File Upload
Profile Pictures: - File type check: JPEG, PNG, WebP only - File size limit: 5 MB maximum - Real file signature is verified (magic bytes) - Virus scanning is performed (ClamAV, etc.)
Storage:
- Uploaded files are stored outside web root
- File names are randomly generated (example: abc123def456.jpg)
- Original file name is not kept on server
Serving: - Files are not downloaded directly from URL - File serving goes through authorized endpoint - Access control is enforced (only owner can view)
6.2 Image Caching
On-Device Storage:
- cached_network_image plugin caches images
- Cache directory is in application private area
- Content is verified from HTTPS source
Cache Management: - Maximum cache size is limited (100 MB) - Old files are automatically deleted (7 days) - Cache can be cleared after logout
7. THIRD-PARTY INTEGRATIONS SECURITY
7.1 Firebase Cloud Messaging (FCM)
Token Security: - FCM token is written to secure storage in the application - Token is sent to server via HTTPS - Token is automatically renewed after expiration - Token is deleted when user logs out
Notification Security: - Notification content is sent through encrypted channels - Notification payload has maximum size limit - Sensitive data is not sent in notifications - Title and body contain only alerts/information
7.2 OAuth Providers (Google, Apple)
Google Sign-In Security: - Official Google SDK is used - Verification is done with Web Client ID - ID Token signature is verified - Nonce parameter is used (replay attack prevention)
Apple Sign-In Security: - Official Sign in with Apple SDK is used - Private Email Relay is supported - JWT signature is verified - Ecosystem authentication is used
7.3 Independent Audit
- Third-party OAuth providers are subject to their own security audits
- Connections are protected with HTTPS
- Tokens are stored in secure storage
8. BUG BOUNTY AND SECURITY DISCLOSURE
8.1 Security Vulnerability Reporting
If you find a security vulnerability, please report it responsibly:
Contact: - Email: bilgi@365gunarapca.com - Subject: [SECURITY] - Your Finding
Report Should Include: - Description of the vulnerability - Impact and severity (Low, Medium, High, Critical) - Proof of Concept (optional) - Relevant URL or endpoint
Response Times: - Critical: Within 24 hours - High: Within 48 hours - Medium: Within 7 days - Low: Within 14 days
8.2 Responsible Disclosure
Policy: - Report the vulnerability to us before making it public - Allow reasonable time for the fix to be implemented (minimum 30 days) - Do not disclose vulnerability details to the public - Responsible reporter receives credit and/or reward
Confirmation: - Acknowledgment email is sent upon receipt - We will update you on fix progress - Vulnerability is disclosed to public after release (36+ months later)
9. DATA BREACH AND INCIDENT MANAGEMENT
9.1 Breach Notification Procedure
If a data breach occurs:
1. Detection Phase (1-2 hours): - Abnormal activity is detected - Breach scope and type are determined - Affected data is identified
2. Damage Containment (2-6 hours): - Affected accounts are temporarily locked - Attack source is isolated - Restore from backups is performed (if needed) - Firewall rules are updated
3. Investigation Phase (1-7 days): - System logs are analyzed - Attack method is determined - Other vulnerabilities are searched - Preliminary report is prepared
4. Notification Phase (within 72 hours): - Affected users are notified via email - What happened is explained - Measures taken are described - Contact information is provided
5. Public Disclosure (if necessary): - Notification is made to KVKK Authority - Press release is issued (if serious) - Project management is updated
9.2 Affected User Notification
Notification Content: - Type of breach (e.g., Unauthorized access to user data) - Date and time of breach - Data affected (e.g., Username, email) - Number of affected users - Protective measures taken - What users should do (e.g., change password) - Contact information
Notification Channels: - Email (primary) - In-app notification (secondary) - SMS (in critical cases)
9.3 Incident Report
After incident investigation: - Comprehensive report is prepared - Root cause analysis is performed - Prevention and remediation recommendations are provided - System hardening is performed
10. SOFTWARE SECURITY AND DEPENDENCY MANAGEMENT
10.1 Code Review
Code Review Process: - All code changes are reviewed by at least 2 people - Checked for security vulnerabilities - Test coverage is verified (minimum 80%) - Code style and best practices are checked
Automated Scanning: - SAST (Static Application Security Testing) tools are used - Linting and code analysis tools (SonarQube, etc.) - Dependency vulnerability scanning
10.2 Dependency Management
Updates: - All dependencies are regularly updated - Security patches are applied immediately - Breaking changes are tested - Tested in staging environment
Vulnerability Scanning: - npm audit, cargo audit, pip audit tools are used - Known vulnerabilities are scanned - High CVSS score patches are applied immediately
10.3 Version Control
Git Security:
- .git directory is not visible on server
- Credentials (SSH keys, tokens) are in .gitignore
- Commit messages are reviewed
- Force push protection is in place
11. SERVER AND INFRASTRUCTURE SECURITY
11.1 Operating System Security
Linux Hardening: - Kernel security patches are applied - Unnecessary services are disabled - SELinux or AppArmor is enabled (optional) - Firewall rules are strict
File System Permissions:
- Files at web root have 644 (rw-r--r--)
- Directories have 755 (rwxr-xr-x)
- Encrypted files have 600 (rw-------)
- Cron scripts have 700 (rwx------)
11.2 Server Access
SSH Security: - SSH key-based authentication is used (no password) - Root login is disabled - Default port 22 is not used - Failed login attempt limit is set - IP whitelist is optional
Sudo Usage: - Sudo is only for specific commands (sudoers file) - Sudo activity is logged - Passwordless sudo for trusted hosts (optional)
11.3 System Monitoring and Logging
Log Files: - All system and application logs are collected centrally - Logs are retained for 90 days - Log files have write protection - Regular log rotation is performed
Monitoring: - System health monitoring (CPU, Memory, Disk) - Network traffic monitoring - Failed login attempt monitoring - Anomaly activity alerts
11.4 Backup and Disaster Recovery
Backup: - Daily database backups are performed - Backups are stored in geographically distributed locations - Backups are encrypted and stored offline - Restore time is under management control
Disaster Recovery (DR): - DR plan is prepared (service downtime under 4 hours) - RTO (Recovery Time Objective): 4 hours - RPO (Recovery Point Objective): 1 hour - Regular DR drills are conducted
12. APPLICATION SECURITY FEATURES
12.1 Local Storage Security
Secure Storage Usage:
- JWT tokens are stored with flutter_secure_storage
- SharedPreferences are encrypted on Android 12+
- Device unlock can be required (optional enforcement)
Temporary Memory: - Sensitive data (passwords, tokens) remain in RAM only during processing - Cleared from memory after use - String buffers are overwritten
12.2 Application Protection
Code Obfuscation: - Code is obfuscated in release build - ProGuard (Android) / Code Obfuscation (iOS) is used - String encryption for sensitive strings - API keys are encrypted and decrypted at runtime
Debugging Disabled: - Debugger is disabled in production build - Console logs are minimized in production - Network interceptors are only in dev build
12.3 Biometric Security
Fingerprint / Face Recognition: - Device's native biometric API is used - Biometric data remains on device (never sent to server) - Failed attempt limit is set - Fallback password protection is available
13. PERSONNEL TRAINING AND RESPONSIBILITY
13.1 Security Training
- All personnel receive OWASP Top 10 training
- Secure coding practices training is provided
- Data protection and privacy training (annual)
- Social engineering awareness training
13.2 Access Control
- Personnel receive minimum necessary access (least privilege)
- Access is immediately revoked upon departure
- Written NDA is signed
- Audit logs record personnel access
14. THREAT ASSESSMENT
14.1 Threat Model
Identified Threats: - Unauthorized Access: Account hacking, credential stuffing - Data Breach: Database attack, insider threat - Man-in-the-Middle: Network interception, proxy attack - Malware: Trojan, spyware, ransomware - Social Engineering: Phishing, pretexting - Denial of Service: DDoS, resource exhaustion
14.2 Risk Assessment
Threats are evaluated based on severity and likelihood: - Critical: Immediate action required - High: Fix within 30 days - Medium: Fix within 90 days - Low: Fix within 1 year
15. LEGAL COMPLIANCE
15.1 International Standards
- ISO 27001: Information security management system (compliant)
- OWASP Top 10: Web application security threats (addressed)
- PCI-DSS: Payment card security (compliant, no card processing)
15.2 Data Protection Laws
- KVKK (Turkey): Personal Data Protection Law compliant
- GDPR (EU): European Union data protection regulation compliant
- COPPA: US Children's Online Privacy Protection Act compliant
16. SECURITY COMMUNICATION AND REPORTING
Security Questions: - Email: bilgi@365gunarapca.com
Regular Notifications: - Monthly security summary (internal) - Quarterly external audit report - Annual security assessment
End of Security Policy / Güvenlik Politikası Sonu