Dile göre güvenli kod incelemesi: PHP, Python ve JavaScript
PHP, Python ve Node.js’e özgü tehlikeli kalıpları ve popüler çerçevelerin tuzaklarını tanır, her dilde açıkları bulup çekme isteğiyle düzeltir, bu dillere özel Semgrep kuralları yazarsın.
Seviye 401 · 16 ders · 14 pratik lab
Dersler
PHP
- PHP’de tehlikeli işlevler: eval, include, unserialize ve system
- Tür karışıklığı: gevşek karşılaştırma ve kimlik doğrulama
- Laravel ve Symfony’de güvenli ve güvensiz kalıplar
- Kısa görev: bir PHP uygulamasında dört açığı bul ve düzelt
Python
- Python’da tehlikeli kalıplar: eval, pickle, subprocess ve yaml.load
- Django’da güvenli varsayılanlar ve atlanan korumalar
- Flask ve FastAPI: şablon, oturum ve doğrulama hataları
- Kısa görev: bir Flask uygulamasında dört açığı bul ve düzelt
JavaScript ve Node.js
- Node.js’te tehlikeli kalıplar: child_process, eval ve dinamik require
- Express ara katmanları: sıralama hataları ve eksik kontroller
- Prototip kirliliği ve düzenli ifade kaynaklı hizmet kesintisi (ReDoS)
- Ön yüz kodunu incelemek: React, Vue ve tarayıcı API’leri
- Kısa görev: bir Express uygulamasında dört açığı bul ve düzelt
Kural ve süreç
- Bu dillere özel Semgrep kuralları yazmak
- composer, pip ve npm bağımlılık denetimi
- Bitirme görevi: üç dilde yazılmış mikro servisleri incele ve çekme istekleriyle düzelt
Pratik lablar
- PHP'de gevşek karşılaştırma: Belirteç doğrulamasında gevşek karşılaştırma kullanan satırı bul ve sabit süreli katı karşılaştırmayla düzelt.
- include ile dinamik dosya: Kullanıcı girdisinden yol kuran include çağrısını bul ve sabit eşlemeyle değiştir.
- Laravel'de toplu atama ve ham sorgu: Laravel servisinde korunmayan model alanlarını ve ham sorguyu bul, düzelt ve testleri geçir.
- PHP servisinde dört açık: PHP servisindeki dört açığı kod okuyarak bul, düzelt ve her biri için test ekle.
- yaml.load ve güvenli yükleyici: Yapılandırma okuyan kodda güvensiz yaml.load çağrısını bul ve güvenli yükleyiciyle değiştir.
- Flask'ta sabit gizli anahtar: Kodda gömülü oturum anahtarını bul, ortamdan okunacak şekilde düzelt ve eski oturumları geçersiz kıl.
- Django'da atlanan koruma: CSRF korumasını ve otomatik kaçışı devre dışı bırakan iki yeri bul ve korumaları geri getir.
- FastAPI'de eksik doğrulama modeli: Ham sözlük kabul eden uç noktayı bul, doğrulama modeli ekle ve fazla alanları reddet.
- Flask servisinde dört açık: Flask servisindeki şablon, oturum, komut ve yetki açıklarını bul, düzelt ve testleri geçir.
- Express'te ara katman sırası: Yetki ara katmanından önce tanımlanmış rotayı bul ve sıralamayı düzelt.
- child_process ile komut: Kullanıcı girdisini exec ile çalıştıran kodu bul ve argüman listeli çağrıya çevir.
- ReDoS: felaket geri izleme: Doğrulamada kullanılan düzenli ifadenin uzun girdide servisi kilitlediğini lab'da ölç ve ifadeyi yeniden yaz.
- Üç dile özel Semgrep kuralları: PHP, Python ve Node için birer tehlikeli kalıbı yakalayan Semgrep kuralı yaz ve depoda çalıştır.
- Bağımlılık denetimi: composer, pip, npm: Üç servisin bağımlılıklarını denetle, gerçekten erişilebilir olan açığı belirle ve yükseltip testleri geçir.
Kurs hakkında
PHP, Python ve Node.js’e özgü tehlikeli kalıpları ve popüler çerçevelerin tuzaklarını tanır, her dilde açıkları bulup çekme isteğiyle düzeltir, bu dillere özel Semgrep kuralları yazarsın.
Ne öğreneceksin
- PHP
- Python
- JavaScript ve Node.js
- Kural ve süreç
Ön koşullar
Aynı yolun 301 düzeyine kadar olan konularını uygulamış olmalısın.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 401 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.