Spring Boot Güvenlik İncelemesi
Auth ekleme, girişi işleme, endpoint oluşturma veya gizli bilgilerle uğraşırken kullanın.
Ne Zaman Aktif Edilir
- Kimlik doğrulama ekleme (JWT, OAuth2, session-based)
- Yetkilendirme uygulama (@PreAuthorize, role-based erişim)
- Kullanıcı girişini doğrulama (Bean Validation, custom validator'lar)
- CORS, CSRF veya güvenlik başlıklarını yapılandırma
- Gizli bilgileri yönetme (Vault, ortam değişkenleri)
- Rate limiting veya brute-force koruması ekleme
- Bağımlılıkları CVE için tarama
Kimlik Doğrulama
- İptal listesi ile stateless JWT veya opaque token'ları tercih edin
- Session'lar için
httpOnly,Secure,SameSite=Strictcookie'leri kullanın - Token'ları
OncePerRequestFilterveya resource server ile doğrulayın
Yetkilendirme
- Method güvenliğini etkinleştirin:
@EnableMethodSecurity @PreAuthorize("hasRole('ADMIN')")veya@PreAuthorize("@authz.canEdit(#id)")kullanın- Varsayılan olarak reddedin; sadece gerekli scope'ları açığa çıkarın
Girdi Doğrulama
- Controller'larda
@Validile Bean Validation kullanın - DTO'lara kısıtlamalar uygulayın:
@NotBlank,@Email,@Size, custom validator'lar - Render etmeden önce herhangi bir HTML'i whitelist ile temizleyin
SQL Injection Önleme
- Spring Data repository'leri veya parametreli sorgular kullanın
- Native sorgular için
:parambinding'leri kullanın; string'leri asla birleştirmeyin
Parola Kodlama
- Parolaları her zaman BCrypt veya Argon2 ile hash'leyin — asla düz metin saklamayın
- Manuel hash'leme değil
PasswordEncoderbean'i kullanın
CSRF Koruması
- Tarayıcı session uygulamaları için CSRF'i etkin tutun; formlara/başlıklara token ekleyin
- Bearer token'lı saf API'ler için CSRF'i devre dışı bırakın ve stateless auth'a güvenin
Gizli Bilgi Yönetimi
- Kaynak kodda gizli bilgi yok; env veya vault'tan yükleyin
application.yml'i kimlik bilgilerinden arınmış tutun; yer tutucular kullanın- Token'ları ve DB kimlik bilgilerini düzenli olarak döndürün
Güvenlik Başlıkları
CORS Yapılandırması
- CORS'u controller başına değil, güvenlik filtre seviyesinde yapılandırın
- İzin verilen origin'leri kısıtlayın — production'da asla
*kullanmayın
Rate Limiting
- Pahalı endpoint'lerde Bucket4j veya gateway seviyesi limitler uygulayın
- Patlamalarda logla ve uyar; yeniden deneme ipuçları ile 429 döndür
Bağımlılık Güvenliği
- CI'da OWASP Dependency Check / Snyk çalıştırın
- Spring Boot ve Spring Security'yi desteklenen sürümlerde tutun
- Bilinen CVE'lerde build'leri başarısız yapın
Loglama ve PII
- Gizli bilgileri, token'ları, parolaları veya tam PAN verilerini asla loglamayın
- Hassas alanları redakte edin; yapılandırılmış JSON loglama kullanın
Dosya Yüklemeleri
- Boyutu, content type'ı ve uzantıyı doğrulayın
- Web root dışında saklayın; gerekirse tarayın
Yayın Öncesi Kontrol Listesi
- Auth token'ları doğru şekilde doğrulanmış ve süresi dolmuş
- Her hassas path'te yetkilendirme korumaları
- Tüm girişler doğrulanmış ve temizlenmiş
- String-birleştirilmiş SQL yok
- Uygulama türü için doğru CSRF duruşu
- Gizli bilgiler harici; hiçbiri commit edilmemiş
- Güvenlik başlıkları yapılandırılmış
- API'lerde rate limiting
- Bağımlılıklar taranmış ve güncel
- Loglar hassas verilerden arınmış
Unutmayın: Varsayılan olarak reddet, girişleri doğrula, en az ayrıcalık ve önce yapılandırma ile güvenli.


