JAVA ve WEB UYGULAMALARI GÜVENLİK UZMANI KURSU
Web veya masaüstü uygulamaları geliştirmek için Java platformunu ve Java ile ilgili teknolojileri kullanan Java geliştiricilerine yönelik bu kursta, Java bağlamında hem Java hem de platformun kendisindeki güvenlik açıkları gibi, hem sunucu hem de istemci tarafı güvenlik açıkları dahil olmak üzere genel web ile ilgili güvenlik sorunları ele alınmaktadır.
Kurs ayrıca, Java Enterprise Edition, Spring, Hibernate ve diğer birçok firmanın güvenlikle ilgili hizmetleri de dahil olmak üzere Java dili ve çalışma ortamı ile sağlanan temel güvenlik çözümlerini tanıtmaktadır.
Bileşenlerin kullanımı çeşitli alıştırmalarla açıklanırken, çeşitli güvenlik açıklarının oluşturduğu riskler, saldırıların yapılması ve ilgili koruma yöntemlerinin uygulanmasıyla ortaya konmaktadır.
Java, Java EE, Spring ve en yeni web ve Java ile ilgili güvenlik açıklarının güvenlik çözümlerini anlamak, Java’yı kullanan tüm programcılar için web uygulamaları geliştirmek için bir zorunluluktur.
KURS AJANDASI
- BT güvenliği ve güvenli kodlama
- Web uygulaması güvenliği (OWASP Top Ten 2017)
- İstemci tarafı güvenliği
- Pratik şifreleme
- Java güvenlik hizmetleri
- Java güvenliğinin temelleri
- Java’da güvenli iletişim
- Genel kodlama hataları ve güvenlik açıkları
- Web servislerinin güvenliği
- Hazırda bekletme güvenliği
- Java EE güvenliği
- JSF ve PrimeFaces güvenliği
- Bahar güvenlik
- Hizmet reddi
- Güvenlik testi teknikleri ve araçları
- Güvenlik ilkeleri ve güvenli kodlama
- Bilgi kaynakları
BU KURS KATILIMCILARA NELER SAĞLAR?
- Güvenlik, BT güvenliği ve güvenli kodlamanın temel kavramlarını anlar.
- OWASP Top Ten’in ötesindeki Web açıklarını öğrenin ve bunlardan nasıl sakınacağınızı öğrenin
- XML güvenliği hakkında bilgi edinin
- İstemci tarafında güvenlik açıklarını ve güvenli kodlama uygulamalarını öğrenin
- Pratik bir kriptografi anlayışına sahip olmak
- Java geliştirme ortamının çeşitli güvenlik özelliklerini kullanmayı öğrenin
- Tipik kodlama hataları ve bunların nasıl önleneceği hakkında bilgi edinin.
- Java çerçevesindeki bazı yeni güvenlik açıkları hakkında bilgi edinin.
- Web servislerinin güvenlik kavramlarını anlama
- JSON güvenliği hakkında bilgi edinin
- Hazırda bekletme güvenliği hakkında bilgi edinin
- Java EE’nin güvenlik çözümlerini anlama
- JSF ve PrimeFaces güvenliği hakkında bilgi edinin
- Bahar güvenliği hakkında bilgi edinin
- Hizmet ataklarını ve korumaları reddetme hakkında bilgi edinin.
- Güvenlik testi teknikleri ve araçları kullanma konusunda pratik bilgi edinin
- Güvenli kodlama uygulamaları hakkında kaynakları
JAVA ve WEB UYGULAMALARI GÜVENLİK UZMANI KURSU 1. GÜN PROGRAMI
- BT güvenliği ve güvenli kodlama
- Güvenlik doğası
- Risk nedir?
- BT güvenliği vs. güvenli kodlama
- Güvenlik açıklarından botnetlere ve siber suçlara kadar
- Güvenlik kusurlarının doğası
- Zorluk nedenleri
- Enfekte bir bilgisayardan hedefe yönelik saldırılara
- Web uygulaması güvenliği (OWASP Top Ten 2017)
- OWASP Top Ten 2017
- A1 – Enjeksiyon
- Enjeksiyon prensipleri
- SQL enjeksiyonu
- Egzersiz – SQL enjeksiyonu
- Tipik SQL Enjeksiyon saldırı yöntemleri
- Kör ve zaman tabanlı SQL enjeksiyonu
- SQL enjeksiyon koruma yöntemleri
- Java’da veri depolama çerçevelerinin SQL enjeksiyonu üzerindeki etkisi
- Diğer enjeksiyon kusurları
- Komuta enjeksiyon
- Örnek olay – ImageMagick
- A2 – Bozuk kimlik doğrulaması
- Oturum taşıma tehditleri
- Oturumun en iyi uygulamaları
- Java’da oturum yönetimi
- Çerez niteliklerini ayarlama – en iyi yöntemler
- Web sitesi isteği sahteciliği (CSRF)
- CSRF önleme
- Java çerçevelerinde CSRF önleme
- A3 – Hassas veri pozlaması
- Hassas veri pozlama
- Taşıma katmanı Güvenliği
- HTTPS’yi zorlamak
- A4 – XML harici varlık (XXE)
- XML Varlığı tanıtımı
- XML dış varlık saldırısı (XXE) – kaynak eklenmesi
- XML harici varlık saldırısı – URL çağrısı
- XML harici varlık saldırısı – parametre varlıkları
- Egzersiz – XXE saldırısı
- Kurumla ilgili saldırıları önleme
- Örnek olay – Google Araç Çubuğunda XXE
- A5 – Bozuk erişim kontrolü
- Tipik erişim kontrolü zayıflıkları
- Güvenli olmayan doğrudan nesne başvurusu (IDOR)
- Egzersiz – Güvensiz doğrudan nesne referansı
- İDOR’a karşı koruma
- Vaka çalışması – Facebook notları
- A6 – Güvenlik yanlış yapılandırması
- Güvenlik yanlış yapılandırması
- Çevreyi yapılandırma
- Güvenli olmayan dosya yüklemeleri
- Alıştırma – Yürütülebilir dosyaların yüklenmesi
- Dosya yüklemelerini filtreleme – doğrulama ve yapılandırma
- A7 – Siteler Arası Komut Dosyası (XSS)
- Kalıcı XSS
- Yansıyan XSS
- DOM tabanlı XSS
- Egzersiz – Çapraz Site Komut Dosyası
- XSS önleme
- Java ve JSP’deki XSS önleme araçları
JAVA ve WEB UYGULAMALARI GÜVENLİK UZMANI KURSU 2. GÜN PROGRAMI
- Web uygulaması güvenliği (OWASP Top Ten 2017)
- A8 – Güvensiz serileştirme
- Deserialization temelleri
- Serileştirmenin güvenlik sorunları
- Java’da serileştirme
- Serileştirmeden kod yürütmeye
- Apache Commons gadget’ını (Java) hedefleyen POP yükü
- Serileştirme güvenlik açıklarının gerçek dünya Java örnekleri
- Serileştirme ile ilgili sorunlar – JSON
- Serileştirme güvenlik açıklarına karşı en iyi uygulamalar
- A9 – Bilinen güvenlik açıkları olan bileşenleri kullanma
- Güvenlik açığı özellikleri
- Ortak Güvenlik Açığı Puanlama Sistemi – CVSS
- A10 – Yetersiz kayıt ve izleme
- Algılama ve tepki
- Kayıt ve log analizi
- Saldırı tespit sistemleri ve Web uygulaması güvenlik duvarları
- A8 – Güvensiz serileştirme
- İstemci tarafı güvenliği
- JavaScript güvenliği
- Aynı Menşe Politikası
- Kökeni Kaynak Paylaşımı (CORS)
- Egzersiz – İstemci tarafı kimlik doğrulaması
- İstemci tarafı kimlik doğrulama ve şifre yönetimi
- JavaScript kodunu koruma
- Clickjacking
- Clickjacking
- Egzersiz – Beni seviyor musun?
- Clickjacking’e karşı koruma
- Anti frame-busting – koruma komut dosyalarını reddetme
- Yıpranma çerçevesinin sıkışmasına karşı koruma
- AJAX güvenliği
- AJAX’ta XSS
- AJAX’te komut dosyası enjeksiyon saldırısı
- Egzersiz – AJAX’ta XSS
- Ajax’te XSS koruması
- AJAX’ta CSRF Alıştırma – JavaScript’i ele geçirme
- AJAX’ta CSRF koruması
- HTML5 güvenliği
- HTML5’te yeni XSS olanakları
- HTML5 tıklama saldırısı – metin alanı enjeksiyonu
- HTML5 clickjacking – içerik çıkarma
- Form kurcalamak
- Alıştırma – Form kurcalama
- Çapraz kaynaklı istekler
- Çapraz kaynaklı istekle birlikte HTML proxy’si
- Egzersiz – Müşteri tarafı dahil
- Pratik şifreleme
- Uygulama kriptografisinin 1. numaralı kuralı
- Kriptosistemler
- Bir şifreleme sisteminin elemanları
- Simetrik anahtar şifreleme
- Simetrik kriptografi ile gizlilik sağlanması
- Simetrik şifreleme algoritmaları
- Operasyon modları
- Diğer şifreleme algoritmaları
- Karma veya mesaj özeti
- Karma algoritmalar
- Shattered
- Mesaj Doğrulama Kodu (MAC)
- Simetrik anahtarla bütünlük ve özgünlük sağlama
- Rasgele sayılar ve şifreleme
- Kriptografik olarak güçlü PRNG’ler
- Donanım tabanlı TRNG’ler
- Asimetrik (genel anahtar) kriptografi
- Genel anahtar şifrelemeyle gizlilik sağlama
- Başparmak kuralı – özel anahtar bulundurma
- Simetrik ve asimetrik algoritmaları birleştirmek
- Genel Anahtar Altyapısı (PKI)
- İnsansı Ortadaki (MitM) saldırı
- MitM saldırısına karşı dijital sertifikalar
- Ortak Anahtar Altyapısında Sertifika Yetkilileri
- X.509 dijital sertifikası
- Java güvenlik hizmetleri
- Java güvenlik hizmetleri – mimari
- Java Şifreleme Mimarisi
- Java Şifreleme Mimarisi / Uzantısı (JCA / JCE)
- Şifreleme Servis Sağlayıcılarını Kullanma
- Motor sınıfları ve algoritmalar
- Egzersiz İşareti – İmza oluşturma ve doğrulama
JAVA ve WEB UYGULAMALARI GÜVENLİK UZMANI KURSU 3. GÜN PROGRAMI
- Java güvenliğinin temelleri
- Java ortamı
- Düşük seviye güvenlik – Java dili ve çevre
- Java dil güvenliği
- Tip güvenliği
- Otomatik bellek yönetimi
- Java yürütme genel bakış
- Bytecode Verifier
- Sınıf Yükleyici
- Java kodunu koruma
- Üst düzey güvenlik – erişim kontrolü
- Koruma alanları
- Güvenlik Yöneticisi ve Erişim Denetleyicisi
- İzin kontrolü
- DoPrivileged’in etkileri
- Egzersiz Kavanozları – İmzalı kodlara izin vermek
- Java’da güvenli iletişim
- Güvenlik Servisi
- SSL / TLS el sıkışma
- Java Güvenli Yuva Uzantısı (JSSE)
- Egzersiz Https – HTTP’den HTTPS’ye Geçiş
- Ortak Anahtar Altyapısı desteği
- Java Anahtar Deposu (JKS)
- Java Sertifika Yolu (CertPath)
- Genel kodlama hataları ve güvenlik açıkları
- Giriş doğrulama
- Giriş doğrulama kavramları
- Tamsayı problemleri
- Negatif tamsayıların gösterimi
- Tamsayı taşması
- Egzersiz IntOverflow
- Math.abs (Integer.MIN_VALUE) değeri nedir?
- Tamsayı problemi – en iyi uygulamalar
- Java vaka çalışması
- Yol geçişi açığı
- Yol geçişi – en iyi uygulamalar
- Örnek çalışma – LastPass’te yetersiz URL doğrulaması
- Onaylanmamış yönlendirmeler ve iletmeler
- Güvenli olmayan yerel çağrılar
- Güvensiz JNI
- Egzersiz Güvensiz JNI
- Güvenli olmayan yansıma
- Bir komuta dağıtıcısının uygulanması
- Güvenli olmayan yansıma – hatayı görün!
- Güvenli olmayan yansımanın azaltılması
- Giriş dövme
- Günlük dosyaları ile diğer bazı tipik sorunlar
- Giriş doğrulama
- Web servislerinin güvenliği
- Web servislerini güvence altına almak – iki genel yaklaşım
- SOAP – Basit Nesne Erişim Protokolü
- RESTful web servislerinin güvenliği
- RESTful web hizmetlerinde kullanıcıları doğrulama
- JSON Web Jetonları ile Kimlik Doğrulama (JWT)
- REST ile yetkilendirme
- REST ile bağlantılı güvenlik açıkları
- XML güvenliği
- Giriş
- XML ayrıştırma
- XML enjeksiyonu
- (Ab) XML’de XSS yükünü depolamak için CDATA’yı kullanma
- Egzersiz – XML enjeksiyonu
- Sanitizasyon ve XML doğrulama yoluyla koruma
- XML bomba
- Egzersiz – XML bomba
- JSON güvenliği
- JSON ayrıştırma
- JSON sunucu tarafını katıştırma
- JSON enjeksiyonu
- JSON kaçırma
- Vaka çalışması – XSS sahte JSON elemanı ile
JAVA ve WEB UYGULAMALARI GÜVENLİK UZMANI KURSU 4. GÜN PROGRAMI
- Genel kodlama hataları ve güvenlik açıkları
- Güvenlik özelliklerinin yanlış kullanımı
- Güvenlik özelliklerinin kullanımıyla ilgili tipik sorunlar
- Güvensiz rastgelelik
- Java’da zayıf PRNG’ler
- Egzersiz Rastgele Testi
- Java’da rasgele sayıları kullanma – hatayı tespit edin!
- Şifre yönetimi
- Egzersiz – Karma şifrelerin zayıflığı
- Şifre yönetimi ve depolama
- Parola depolama için özel amaçlı karma algoritmalar
- Java’da Argon2 ve PBKDF2 uygulamaları
- Java’da bcrypt ve scrypt uygulamaları
- Örnek olay – Ashley Madison veri ihlali
- Şifre yönetiminde tipik hatalar
- Egzersiz – Sabit şifreli şifreler
- Erişilebilirlik değiştiricileri
- Java’da yansımasıyla özel alanlara erişme
- Egzersiz Yansıtma – Yansıma ile özel alanlara erişme
- Egzersiz ScademyPay – Bütünlük koruma zayıflığı
- Güvenlik özelliklerinin yanlış kullanımı
- Hazırda bekletme güvenliği
- Hazırda bekletme güvenlik genel bakış
- Hazırda bekleyen çerçeve ve ekosistem
- Kalıcılık ile ilgili güvenlik sorunları
- Hazırda kalma özgü güvenlik açıkları
- HQL enjeksiyonu
- HQL enjeksiyon egzersizi
- HQL lexer’ı atlamak
- ASTTION örneği
- HQL enjeksiyonuna karşı koruma
- Kalıcı lekelenmiş nesneler (XSS)
- Hazırda Bekleme Aracı
- Hazırda Bekleme Aracı örneği
- Hazırda Bekleme Validator alıştırması
- Equals () ve hashCode () sorunu
- Diğer Hazırda Bekleme ile ilgili sorunlar ve öneriler
- Hazırda bekleyen diğer sorgu olasılıkları
- Örnek olaylar – Hazırda bekleme platformunun bazı zayıflıkları
- CVE-2014-3558: ReflectionHelper tarafından kısıtlama bypass
- CVE-2016-1595: Hizmet Masası HQL Enjeksiyonu Güvenlik Açığı
- Hazırda bekletme güvenlik genel bakış
- Java EE güvenliği
- Java EE çok katmanlı mimarisi
- Roller ve sorumluluklar
- Java EE konteynır tabanlı güvenlik
- Temel kavramlar: kullanıcı, grup, rol, bölge
- Web Güvenliği / Sunum katmanı
- Java EE yetkilendirmesi
- Güvenlik rollerini bildirme
- Arayanın kimliğini programlı olarak kontrol etme
- Güvenlik kısıtlamaları
- Egzersiz WebGüvenliği – JDBC alanını kullanma
- EJB / İş katmanının güvenliği
- Kimliği yaymak
- EJB güvenlik rollerini açıklamak
- EJB yetkilendirmesi – ek açıklama
- EJB yetkilendirmesi – dağıtım tanımlayıcısı
- Arayanın içeriğine programlı olarak erişme
- Egzersiz EJBSecurity
- Egzersiz EJBSecurity – Hazırlık
- Egzersiz EJBSecurity – Çalıştır
- Egzersiz EJBSecurity – Kimlik doğrulamayı zorla
- JSF ve PrimeFaces güvenliği
- Java Sunucusu Yüzleri (JSF)
- PrimeFaces
- JSF ViewState
- ViewState (POST)
- ViewState (GET)
- Yaygın hatalar
- JSF / PrimeFaces saldırı yüzeyi
- XSS önlenmesi
- XSS Egzersiz
- XSS Alıştırma – JSF’de kaçış ve doğrulama uygula
- XSS Egzersiz – Primefaslarda Düzeltmeler
- CSRF Egzersiz
- EL Enjeksiyonu (İfade Dili Enjeksiyonu)
- Egzersiz – EL Enjeksiyonu
- Vaka çalışmaları – JSF ve PrimeFaces’in bazı zayıflıkları
- CVE-2011-4367: Apache MyFaces bilgi ifşası
- PrimeFaces 5.x İfade Dili Enjeksiyonu
JAVA ve WEB UYGULAMALARI GÜVENLİK UZMANI KURSU 5. GÜN PROGRAMI
- Spring güvenlik
- Spring güvenliğe genel bakış
- Springi farklı kılan nedir?
- Spring modülleri
- Kontrolün Tersine Çevirilmesi
- Yön Odaklı Programlama (AOP)
- Yön Odaklı Programlama (AOP) ve güvenlik
- Spring Güvenlik çerçevesi
- Spring Security genel bakış
- Spring Güvenliği çerçevesinin bütünleştirilmesi
- Spring Güvenliği – kimlik doğrulama
- Kimlik doğrulama süreci
- Kimlik doğrulama kodu örneği
- İlkbaharda CSRF koruması
- Spring Güvenliği – yetkilendirme
- Yetki süreci
- Sayfa düzeyinde yetkilendirme
- FilterSecurityInterceptor’ı özelleştirme
- Alıştırma: Spring Security kimlik doğrulama örneği
- ACL’leri tanımlamak ve çalışmak
- Spring Security erişim denetimi ile SpEL entegrasyonu
- Özel yetki
- Özel bir PermissionEvaluator kullanma
- Yöntem düzeyinde güvenlik
- Yöntem düzeyinde güvenlik
- Spel kullanarak yöntem düzeyinde güvenlik
- Spring güvenliğe genel bakış
- Genel kodlama hataları ve güvenlik açıkları
- Uygunsuz hata ve istisna işleme
- Hata ve istisna işlemiyle ilgili tipik sorunlar
- Boş catch bloğu
- Aşırı geniş atar
- Aşırı geniş yakalama
- Çoklu yakalamayı kullanma
- NullPointerException’ı yakalamak
- İstisna işleme – hata nokta!
- Egzersiz ScademyPay – Hata işleme
- Zaman ve durum problemleri
- Zaman ve devletle ilgili problemler
- Eşzamanlılık – hata nokta!
- Thread.run () çağrısı
- Servlet’te yarış durumu – hatayı görün!
- Yarış durumu – hata nokta!
- ArrayList vs Vector
- Kod kalitesi sorunları
- Kötü kod kalitesinden kaynaklanan tehlikeler
- Kötü kod kalitesi – hatayı görün!
- Yayınlanmamış kaynaklar
- Özel diziler – hatayı görün!
- Özel diziler – yazılı alan genel yöntemle döndürüldü
- Egzersiz Nesnesi Hijack
- Nihai nesne ele geçirme olmadan kamu yöntemi
- Serileştirme – hatayı bul!
- Egzersiz Serileştirilebilir Hassas
- Ölümsüz String – hatayı görün!
- Egzersiz Ölümsüz Dizeleri
- Çekilebilirlik ve güvenlik
- Uygunsuz hata ve istisna işleme
- Hizmet reddi
- DoS giriş
- Asimetrik DoS
- SSL / TLS yeniden müzakere DoS
- JSON serileştirme ile asimetrik DOS
- Düzenli ifade DoS (ReDoS)
- Egzersiz ReDoS
- ReDoS azaltma
- Örnek olay – Yığın Değişiminde ReDos
- Hashtable çarpışma saldırısı
- Girdileri saklamak için karma kullanmanın kullanılması
- Hashtable çarpışma
- Java’da karma çakışma
- Güvenlik testi teknikleri ve araçları
- Genel test yaklaşımları
- Kaynak kodu incelemesi
- Yazılım güvenliği için kod incelemesi
- Taint analizi
- Sezgisel-tabanlı
- Statik kod analizi
- Statik kod analizi
- Egzersiz – Statik kod analiz araçlarını kullanma
- Uygulamanın test edilmesi
- Dinamik güvenlik testi
- Manuel ve otomatik güvenlik testi
- Web güvenlik açığı tarayıcıları
- Egzersiz – Bir güvenlik açığı tarayıcısı kullanma
- SQL enjeksiyon araçları
- Egzersiz – SQL enjeksiyon araçlarını kullanma
- Güvenlik ilkeleri ve güvenli kodlama
- Matt Bishop’un sağlam programlama ilkeleri
- Saltzer ve Schroeder’in güvenlik ilkeleri
- Bilgi kaynakları
- Güvenli kodlama kaynakları – başlangıç seti
- Güvenlik açığı veritabanları
- Java güvenli kodlama kaynakları
- Önerilen kitaplar – Java