1. User Enumeration Qorunması: Qeydiyyat zamanı daxil edilən e-poçtun bazada olub-olmamasından asılı olmayaraq eyni mesaj qaytarılır (E-poçta təsdiq göndərildi) Hakerlər hansı e-poçtların sistemdə mövcud olduğunu tapa edə bilməz.

2. Timing Attack: Login zamanı e-poçt bazada tapılmasa belə, arxada "dummy" (saxta) şifrə yoxlaması icra edilir (Bcrypt hash). Beləcə, mövcud olan və olmayan istifadəçilərə qayıdan cavab müddətləri eyniləşdirilir və zaman fərqi ilə hesabın varlığı aşkar edilə bilmir. Həmçinin, token müqayisələrində CryptographicOperations.FixedTimeEquals istifadə edilmişdir.

3. Brute Force və DoS Qoruması: Həm tətbiq səviyyəsində (5 uğursuz cəhddən sonra hesabın 5 dəqiqəlik kilidlənməsi), həm də şəbəkə səviyyəsində .NET RateLimiting ilə (auth endpoint-lərinə xüsusi limitlər) ikili qoruma quruldu.(Qeyd: hesab bloklansa belə google capcha əlavə edəcəm uğurlu şifrə zamanı giriş mümkün olacaq beləliklə Haker bilərək istifadəçini blokluya bilmiyəcək)

4. Refresh Token Rotation: Hər dəfə yeni Access Token alınanda, köhnə Refresh Token avtomatik silinir və yenisi verilir. Tokenin oğurlanması halında təkrar istifadə riskləri sıfıra endirilir.

5. Strict E-poçt Təsdiqi Yoxlaması: Hesab yaradıldıqda sistemə JWT buraxılmır. İstifadəçi e-poçtuna gedən unikal kriptoqrafik linkə klikləmədiyi müddətcə profil inaktiv qalır.

6. Information Leakage: Global Exception Middleware vasitəsilə Production mühitində heç bir Stack Trace və ya daxili xəta səbəbi (500 Server Error) istifadəçiyə/hakerə sızdırılmır. Login zamanı "E-poçt tapılmadı" deyil, həmişə "E-poçt və ya parol yanlışdır" mesaji verilir.

7. Input Validation & Security Headers: FluentValidation avtomatlaşdırılmış pipeline filteri ilə bütün DTO-lar yoxlanılır. API HTTP cavablarında isə X-Frame-Options, X-Content-Type-Options, Referrer-Policy və HSTS kimi vacib Security Header-lər tətbiq edilib.

8. CI/CD Security Scanning: GitHub Actions ilə qurduğum pipeline hər commit zamanı yalnız build etmir, həm də layihədəki asılılıqlarda (dependencies) hər hansı təhlükəsizlik boşluğu olub-olmadığını (dotnet list package — vulnerable) avtomatik yoxlayır.