Pratik Modu
Pratik Modu, zafiyetli kodu tespit edip doğru düzeltmeyi seçtiğiniz kod inceleme görevleri sunar. OWASP Top 10 (Web), OWASP API Top 10, OWASP Mobile Top 10 ve OWASP Client-Side Top 10'u kapsayan 200+ konuda — birden fazla dilde — kullanılabilir.
Nasıl Çalışır
Her görev, hem zafiyet tespiti hem de düzeltme becerilerinizi test etmek üzere tasarlanmış iki aşamalı bir sistemi takip eder:
1. Aşama — Güvenlik Açığını Bul
Bir kod parçacığını okuyun ve hangi bloğun güvenlik açığını içerdiğini belirleyin. İlerlemek için vurgulanmış birkaç seçenek arasından doğru bloğa tıklayın.
2. Aşama — Düzeltmeyi Seç
Güvenlik açığını belirledikten sonra birden fazla seçenek arasından doğru düzeltmeyi seçin. Her seçenek mantıklı görünür, ancak yalnızca bir tanesi güvenlik sorununu doğru şekilde çözer.
Görev Arayüzü
Tipik bir kod inceleme görevinin nasıl göründüğü:
Kullanıcı sorgusunda SQL Injection
backend / python / web
Bir kullanıcı detay uç noktası, sorgu dizesinden id alır ve eşleşen satırı getirmek için kullanır. Aşağıdaki aday bloklardan biri, güvenmemesi gereken bu değere güvenir.
Dilinizi Seçme
Her konunun birden fazla programlama dilinde görevleri vardır. Teknoloji tercihiniz hangi dilin varsayılan olarak gösterileceğini belirler — backend geliştiricileri Python, Java veya Go görevleri görürken, frontend geliştiricileri React, Vue veya Angular görevleri görür.
Dil seçiciyi kullanarak istediğiniz zaman dil değiştirebilirsiniz. Tercihiniz kaydedilir, böylece görevleri her zaman tercih ettiğiniz teknoloji yığınında öncelikli görürsünüz.
İpucu Kullanma
Her aşamanın kendi ipucu düğmesi vardır. Bir ipucu kullanmak o aşama için kazandığınız puanı yarıya indirir; tabanı 10 XP'dir — yani 100 XP değerindeki ilk denemede temiz bir aşama ipucu kullandığınızda 50 XP olur, 60 XP değerindeki ikinci denemede yapılan bir aşama 30 XP olur. İpuçları cevabı vermeden hedefe yönelik rehberlik sağlar — sizi doğru yöne yönlendirir ancak yine de eleştirel düşünmenizi gerektirir.
İpuçları isteğe bağlıdır. Özellikle tanımadığınız bir güvenlik açığı türüyle ilk kez karşılaştığınızda yardımcı olur.
Puanlama ve XP
Her aşama bağımsız olarak puanlanır. İlk denemede doğru cevap aşamanın tam XP'sini kazandırır; tekrarlanan yanlış denemeler ve ipucu kullanımı bunu azaltır.
| Aşama sonucu | İpucusuz | İpucuyla |
|---|---|---|
| 1. denemede doğru | 100 XP | 50 XP |
| 2. denemede doğru | 60 XP | 30 XP |
| 3. denemede veya sonrasında doğru | 30 XP | 15 XP |
| Görev başına maksimum (her iki aşama ilk denemede, ipucusuz) | 200 XP | |
İpucu indirimi, 10 XP tabanlı bir %50 kesintidir, yani ipucuyla 3. denemede yapılan bir aşama bile en az 10 XP kazandırır. İki aşama bağımsız çalışır — 1. Aşamadaki bir ipucu veya yanlış deneme 2. Aşamayı etkilemez.
Yanlış tahmin ettiğinizde ne olur
Her iki aşamada da ilk yanlış deneme sizi aynı kod üzerinde tekrar denemeye yönlendirir. 1. Aşamada ikinci yanlış denemeden sonra, kaçırdığınız güvenlik açığının gerçek dünyadaki sonuçlarını açıklayan kısa bir hikâye diyaloğu görünür ve sonra tekrar denemenize izin verilir. Deneme sınırı yoktur — tekrar tekrar deneyebilirsiniz, ancak üçüncüden sonraki her ek deneme aşamayı 30 XP'de sınırlar.
Görev Tamamlama
Her iki aşamayı tamamladıktan sonra bir puan dökümü görürsünüz:
1. Aşamadan 2. Aşamaya Akışı Okuma
İki aşamalı yapı, zafiyet tespiti ve düzeltmenin farklı beceriler olduğu için vardır. 1. Aşama gözünüzü eğitir: size eksiksiz bir fonksiyon veya metot verilir, hangi satırın tehlikeli olduğunu bulursunuz. Kod yazmanız istenmez; bir inceleyici gibi okumanız istenir. Zafiyetli satır nadiren sözdizimsel olarak en ilginç olanıdır. Genellikle bir geliştiricinin düşünmeden yazacağı sessiz bir satırdır; örneğin daha sonra ayrıştırılacak bir dizeye bir istek parametresini birleştirmek gibi.
2. Aşama muhakemenizi eğitir. Sorunun nerede olduğunu öğrendikten sonra platform size birkaç mantıklı düzeltme gösterir. Çoğu derlenir, çalışır ve makul görünür. Yalnızca biri güvenlik açığını tamamen kapatır. Bazı seçenekler altta yatan ilkeli bozulmamış halde bırakırken belirgin belirtiyi yamalar. Bazı seçenekler aşırı düzeltir ve fonksiyonu kırar. 2. Aşamanın amacı, bir düzeltmenin yalnızca orijinalden daha güvenli görünüp görünmediği değil, neden işe yaradığı konusunda akıl yürütmenizi sağlamaktır. Yanlış cevapları bir çalışma rehberi olarak değerlendirin: her biri, gerçek geliştiricilerin gerçek pull request'lerde yaptığı gerçek bir hatadır.
Tahmin Etmek Öğrenme Eğrisini Neden Mahveder
İpucu sistemi bir aşamanın XP'sini yarıya indirir (10 XP tabanıyla), kulağa ceza gibi gelir ama bir takas olarak yapılandırılmıştır. Takas, daha düşük bir puan karşılığında anlamlı rehberliktir. İpucusuz tahmin etmek size aynı XP'ye mal olur ve hiçbir şey öğretmez, çünkü geri bildirim döngüsü öğrenilemeyecek kadar kabadır. Kendinizi tıklamadan önce parçacığı otuz saniyeden az okurken buluyorsanız, neredeyse kesinlikle tahmin ediyorsunuzdur. Yavaşlayın, parçacığı iki kez okuyun, güven sınırının nerede olduğunu varsayın, sonra tıklayın.
Yeni bir güvenlik açığı sınıfı için doğru ritim, dikkatli okumak, takıldığınızda ipucunu kullanmak ve puan indirimini öğrenmenin bedeli olarak kabul etmektir. Aynı sınıfta üç dört görevden sonra ipucuna ihtiyaç duymayı bırakırsınız. On görevden sonra kendi kodunuzda da aynı kalıbı görmeye başlarsınız. O eğriyi tahmin ederek sıkıştırmak imkansızdır. Bu parçacıkların arkasındaki saldırı zincirleri hakkında daha derin bağlam için Öğrenme Modu'undaki eşleşen Öğrenme senaryosunu deneyin.