Slide 1

Slide 1 text

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