Dokümanlar/Öğrenciler İçin/Pratik Modu

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.

Puanlama: Her görev en fazla 200 XP değerindedir — ilk denemede doğru cevap için her aşama 100 XP. Tekrarlanan denemeler ve ipucu kullanımı aşama başına puanı azaltır (aşağıdaki Puanlama ve XP bölümüne bakın).

Görev Arayüzü

Tipik bir kod inceleme görevinin nasıl göründüğü:

app.securecodinghub.com/topic/sql-injection/challenge/0
1
Açığı bul
2
Düzeltmeyi seç
3
Tamamlandı
0XP
Yüksek Risk

Kullanıcı sorgusunda SQL Injection

backend / python / web

Senaryo

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.

PYTHONviews.py
12def get_user(request):
13 user_id = request.GET['id']
14 query = "SELECT * FROM users WHERE id=" + user_id
15 cursor.execute(query)
16 return JsonResponse(cursor.fetchone())
Vurgulanan bloklar adaylardır — zafiyetli olanı seçin.

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.

JavaScript
TypeScript
Python
Java
C#
PHP
Go
React
Vue
Angular
Swift
Kotlin

İ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ğru100 XP50 XP
2. denemede doğru60 XP30 XP
3. denemede veya sonrasında doğru30 XP15 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:

app.securecodinghub.com/topic/sql-injection/challenge/0
Görev tamamlandı
+200 XP
1. Aşama — Açığı bul100 / 100
2. Aşama — Düzeltmeyi seç100 / 100
Sonraki adımlar: İnteraktif saldırı senaryosu rehberleri için Öğrenme Modu'unu keşfedin veya doğrudan kontrol panelinden pratiğe başlayın.

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.