S E C U R E
S O F T W A R E
D E V E L O P M E N T
T E C H N I Q U E S
mert metin
Slide 2
Slide 2 text
M E R T M E T İ N
Bana Nasıl Ulaşabilirsin ?
Senior Software Engineer
7+ years working experience
Blogger, speaker
Interests
software architecture,
secure software, clean code,
web apps, API,
infrastructure,
Microsoft / .NET
Slide 3
Slide 3 text
Sistemin güvenlik risklerine karşı korunaklı hale gelmesini sağlayabilecek en iyi
uygulamaların ve tekniklerin, yazılım geliştirme adımında uygulanmasıdır.
Güvenli Yazılım Geliştirme
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
Tehdit: Zarara yol açabilecek potansiyel bir tehlike
Zafiyet: Bir tehdidin yararlanabileceği herhangi bir zayıflık
T E H D İ T
V S
Z A F İ Y E T
Slide 6
Slide 6 text
Hata, yazılımın yanlış
çalışmasına neden olan
beklenmeyen bir
kusurdur.
Slide 7
Slide 7 text
Zafiyetlerden yararlanarak sistemi olumsuz yönde etkileme tehdidine
sahip bir hata türüdür.
G Ü V E N L İ K A Ç I Ğ I
B İ R
H A T A M I D I R ?
Slide 8
Slide 8 text
O n e S i g n a l - H G S / A n a d o l u S i g o r t a V a k a s ı
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
Yapılandırma dosyalarında tutulan ve uygulamaların kullandığı veri tabanı bağlantı bilgileri,
entegre edilen API keyleri, sunucu parolaları vs.
Configde Saklanan Giriş Bilgileri
Key Vault çözümler - Azure Key Vault
User Secrets
Yapılandırma dosyasının erişim yetkisinin kısıtlanması
Çözümler
Slide 11
Slide 11 text
Authentication: Sen kimsin?
Authorization: Senin rollerin nedir, nerelere erişebilirsin?
AUTHORIZATION
VS
AUTHENTICATION
Slide 12
Slide 12 text
A u t h e n t i c a t i o n
API, Web Sayfası gibi kaynaklara erişim için kullanılan kimliği belirleme yolu
Ne yapabiliriz?
Aşağıdaki authentication stratejilerinin projelere dahil edilmesi
Basic Authentication
JWT Token
OAuth
Slide 13
Slide 13 text
I D O R Z a f i y e t i
( I n s e c u r e D i r e c t O b j e c t R e f e r e n c e s )
Yetkilendirme kontrolünün doğru bir şekilde uygulanmamasından kaynaklıdır.
Çözüm
Rol gruplarına yönelik yetki kontrol mekanizmasının uygulanması
Her kaynak erişim isteğinde, kullanıcının bu kaynağa erişim yetkisi olduğundan emin
olunmalı.
Slide 14
Slide 14 text
Authentication olmazsa,
kim olduğunu bilmediğiniz birine erişim verebilirsiniz.
Authorization olmazsa,
bir kullanıcı, sisteme giriş yaptıktan sonra sınırsız erişime sahip olabilir.
Slide 15
Slide 15 text
Kötü niyetli kullanıcılar sistemi trafiğini veya kaynağı olumsuz etkileyecek
istekler yapabilir.
Çözümler
Rate Limiting Kurgulamak
İstek sınırının iş kurallarına dahil edilmesi
B r u t e F o r c e - D D o s A t a k l l a r ı
Slide 16
Slide 16 text
Script kodları üzerinden - javascript - bir web sayfasına saldırı yapılmasıdır.
Çözümler
Form alanlarının doğrulanması
HTML Encoder kullanımı
DomPurify çözümlerinin uygulanması
Girişlerde HTML’yi engelleyin
X S S ( C r o s s S i t e S c r i p t i n g )
Slide 17
Slide 17 text
S Q L I n j e c t i o n
Kullanıcı girişleri doğrudan SQL sorgularına dahil edildiğinde, saldırganlar kötü
amaçlı SQL kodları çalıştırabilir.
Çözümler
Sorgulara parametre eklenmesi
Uygulamalardan girilen girdilerin filtrelenmesi
WAF - Web Application Firewall - Güvenlik duvarı ile kontrollerin yapılması
Slide 18
Slide 18 text
" o r " " = " P a t t e r n
Slide 19
Slide 19 text
o r 1 = 1 P a t t e r n
Slide 20
Slide 20 text
S Q L S o r g u E n j e k t e E t m e k
Slide 21
Slide 21 text
No content
Slide 22
Slide 22 text
V e r i l e r i n D o ğ r u l a n m a s ı - V a l i d a t i o n
Verilerin doğrulanmasını sadece client-arayüze bırakmak. Manipülasyona açıktır.
Server side validation ile desteklemek
Kütüphaneler - FluentValidation
Doğru iş kuralları
Slide 23
Slide 23 text
C r o s s - S i t e R e q u e s t F o r g e r y ( C S R F )
Herhangi bir web uygulamasında oturum açmış bir kullanıcının oturumunu kullanarak
kullanıcının istekleri dışında işlemler yapılmasıdır.
Çözümler
AntiForgeryToken
Kritik işlemler için POST metodu kullanmak
Slide 24
Slide 24 text
. N E T - Ç ö z ü m ü - V a l i d a t e A n t i F o r g e r y T o k e n
Slide 25
Slide 25 text
Web sayfalarının farklı kaynaklardan isteklere izin verme sürecini yöneten bir güvenlik yapısının
kurgulanmasıdır.
Doğru CORS yapılandırması, bir web uygulamasının sadece güvenilir kaynaklardan veri alışverişi
yapmasını sağlayıp güvenlik ihlallerini sınırlar.
C O R S Y a p ı s ı K u r u l m a s ı
Slide 26
Slide 26 text
Access-Control-Allow-Origin: Uygulamanızın sadece belirli ve güvenilir kaynaklar tarafından erişilmesini
sağlar.
"*" → Herkese izin verir (güvenlik açısından risklidir).
"https://example.com" → Sadece bu kaynağa izin verir.
Access-Control-Allow-Methods: Hangi HTTP yöntemlerinin (GET, POST, PUT, DELETE vb.)
kullanılabileceğini tanımlar.
Access-Control-Allow-Headers: İstemciden hangi özel başlıkların (headers) kabul edileceğini tanımlar.
Hassas bilgilerin kontrolsüz bir şekilde iletilmesini engeller.
Örnek: Authorization, Content-Type
Slide 27
Slide 27 text
D o ğ r u H e a d e r l a r ı n E k l e n m e s i
Security headers, web uygulamalarını tarayıcı seviyesinde korumak için sunucudan istemciye (tarayıcıya)
gönderilen HTTP başlıklarıdır.
Önemli Başlıklar
Content-Security-Policy (CSP): XSS (Cross-Site Scripting) ve veri enjeksiyon saldırılarını önler.
Örnek: Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-scripts.com
Strict-Transport-Security (HSTS): Bütün iletişimin Https ile olmayı zorunlu tutar.
X-Frame-Options: Clickjacking saldırılarını önler.
Deny - Allow From - Same Origin
Slide 28
Slide 28 text
D o ğ r u H e a d e r l a r ı n E k l e n m e s i
X-Content-Type-Options: Tarayıcıların içerik türünü tahmin etmesini engelleyerek MIME tipi saldırılarını
önler.
Permissions-Policy (Eski adıyla Feature-Policy): Tarayıcıda belirli API'lerin (ör. kamera, mikrofon)
kullanılmasını kontrol eder.
Slide 29
Slide 29 text
Security headers, web uygulamalarını tarayıcı seviyesinde korumak için sunucudan istemciye (tarayıcıya)
gönderilen HTTP başlıklarıdır.
Referrer-Policy: Kullanıcının hangi sayfadan geldiği bilgisinin kontrolünü sağlar ve hassas URL’lerin
sızmasını önler.
Başlıca değerler: "no-referrer", "same-origin", "strict-origin"
D o ğ r u H e a d e r l a r ı n E k l e n m e s i
o r i g i n y a p ı s ı
Slide 30
Slide 30 text
s e c u r i t y h e a d e r s . c o m
Slide 31
Slide 31 text
s e c u r i t y h e a d e r s . c o m
Slide 32
Slide 32 text
H t t p s Y e r i n e H t t p D e s t e ğ i V e r i l m e s i
Kimlik Doğrulama Sorunları: HTTPS, güvenli bağlantıyı doğrulayan bir sertifika sağlar, böylece kullanıcıların
sahte sitelere yönlendirilmesi engellenir.
Veri İfşası: HTTP üzerinden iletilen kişisel bilgiler, kullanıcı adı, şifreler, kredi kartı bilgileri gibi veriler
şifrelenmediği için kolayca ele geçirilebilir.
Man-in-the-Middle Saldırıları: Araya giren saldırganlar, kullanıcı ve sunucu arasındaki iletişimi dinleyip
değiştirebilir.
Çözüm: HTTPS: SSL/TLS protokollerini kullanarak verilerin güvenli bir şekilde şifrelenmesini sağlar.
Slide 33
Slide 33 text
G ü n c e l O l m a y a n P a k e t - K ü t ü p h a n e K u l l a n ı m ı
Eski ve güvenlik açıklarına sahip
kütüphaneler, projeyi savunmasız bırakabilir.
Çözüm
Paketleri belirli aralıklarla versiyonlarını
kontrol edip güncel tutmak.
Slide 34
Slide 34 text
Uygulamalarda hata mesajlarının detaylı verilmesi, hatanın kaynağının açıkça belirtilmesi
Hassas bilgilerin görünür bir şekilde loglanması,
Çözüm
Loglamalarda kişisel bilgilerin maskelenmesi ya da hiç gösterilmemesi
Hata Mesajlarında - kod görsellerinin eklenmeyip, loglamanın arka planda yapılması
Detaylı hata mesajlarının gizlenmesi.
H a s s a s B i l g i l e r
Slide 35
Slide 35 text
No content
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
Connection String Parameter Pollution
Doğrulanmayan bir veriden dolayı connection stringlerde mevcut parametre değerlerini
geçersiz kılabilir, yeni bir parametre enjekte edebilir.
Açık yaratan kod
Slide 38
Slide 38 text
Forma, "xxx; Integrated Security = true" yazarsa ne olur?
Bu değer, uygulamanın normal kimlik doğrulamasını aşıp uygulamanın çalıştığı işletim sistemi
hesabını kullanarak veritabanına bağlanmasını sağlayacaktır.
Böylece, saldırganın geçerli bir parola olmadan veritabanına bağlanabileceği ve veritabanına
doğrudan sorgular gerçekleştirebileceği anlamına gelir.
Slide 39
Slide 39 text
DevSecOps, yazılım geliştirme sürecinin her aşamasında
güvenlik testlerini entegre etme uygulamasıdır.
Slide 40
Slide 40 text
Güvenlik Taraması İçin Araçlar
Slide 41
Slide 41 text
T E Ş E K K Ü R L E R
Bana Nasıl Ulaşabilirsin ? Sunuma Ulaşmak İçin