Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Güvenli Yazılım Geliştirme Teknikleri

Mert Metin
December 20, 2024

Güvenli Yazılım Geliştirme Teknikleri

Mert Metin

December 20, 2024
Tweet

More Decks by Mert Metin

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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
  4. 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
  5. 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 ?
  6. 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 ı
  7. 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
  8. 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
  9. 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ı.
  10. 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.
  11. 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 ı
  12. 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 )
  13. 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ı
  14. S Q L S o r g u E n

    j e k t e E t m e k
  15. 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ı
  16. 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
  17. . 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
  18. 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 ı
  19. 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
  20. 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
  21. 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.
  22. 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 ı
  23. s e c u r i t y h e

    a d e r s . c o m
  24. s e c u r i t y h e

    a d e r s . c o m
  25. 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.
  26. 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.
  27. 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
  28. 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
  29. 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.
  30. T E Ş E K K Ü R L E

    R Bana Nasıl Ulaşabilirsin ? Sunuma Ulaşmak İçin