Dokumente/Für Lernende/Übungsmodus

Übungsmodus

Der Übungsmodus präsentiert Code-Review-Challenges, bei denen Sie verwundbaren Code identifizieren und die richtige Lösung auswählen. Verfügbar in über 200 Themen, die OWASP Top 10 (Web), OWASP API Top 10, OWASP Mobile Top 10 und OWASP Client-Side Top 10 abdecken — in mehreren Sprachen.

Funktionsweise

Jede Challenge folgt einem zweiphasigen System, das darauf ausgelegt ist, sowohl Ihre Fähigkeiten zur Schwachstellenerkennung als auch zur Abhilfe zu testen:

Phase 1 — Schwachstelle finden

Lesen Sie einen Codeausschnitt durch und identifizieren Sie, welcher Block die Sicherheitslücke enthält. Klicken Sie auf den richtigen Block unter mehreren hervorgehobenen Optionen, um voranzukommen.

Phase 2 — Lösung wählen

Sobald Sie die Schwachstelle identifiziert haben, wählen Sie die richtige Lösung aus mehreren Optionen. Jede Option sieht plausibel aus, aber nur eine adressiert das Sicherheitsproblem richtig.

Punktevergabe: Jede Challenge ist bis zu 200 XP wert — 100 XP für jede Phase bei einer korrekten Antwort beim ersten Versuch. Wiederholte Versuche und Hinweisnutzung reduzieren die Punktzahl pro Phase (siehe Punktevergabe & XP unten).

Challenge-Oberfläche

So sieht eine typische Code-Review-Challenge aus:

app.securecodinghub.com/topic/sql-injection/challenge/0
1
Schwachstelle finden
2
Lösung wählen
3
Abgeschlossen
0XP
Hohes Risiko

SQL Injection in user lookup

backend / python / web

Szenario

Ein User-Detail-Endpoint nimmt die id aus der Query-String und verwendet sie, um die passende Zeile abzurufen. Einer der Kandidatenblöcke unten vertraut diesem Wert, obwohl er es nicht sollte.

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())
Hervorgehobene Blöcke sind Kandidaten — wählen Sie den verwundbaren.

Ihre Sprache wählen

Jedes Thema hat Challenges in mehreren Programmiersprachen. Ihre Stack-Einstellung bestimmt, welche Sprache standardmäßig angezeigt wird — Backend-Entwickler sehen Python-, Java- oder Go-Challenges, während Frontend-Entwickler React-, Vue- oder Angular-Challenges sehen.

Sie können die Sprache jederzeit über den Sprachwähler wechseln. Ihre Einstellung wird gespeichert, sodass Sie Challenges immer zuerst in Ihrem bevorzugten Stack sehen.

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

Hinweise verwenden

Jede Phase hat ihren eigenen Hinweis-Button. Die Verwendung eines Hinweises halbiert die für diese Phase verdiente Punktzahl, mit einer Untergrenze von 10 XP — so wird eine saubere Erstversuch-Phase mit 100 XP zu 50 XP, wenn Sie den Hinweis verwendet haben, und eine Zweitversuch-Phase mit 60 XP wird zu 30 XP. Hinweise bieten gezielte Führung, ohne die Antwort zu verraten — sie weisen Sie in die richtige Richtung, erfordern aber dennoch kritisches Denken.

Hinweise sind optional. Sie sind besonders hilfreich, wenn Sie zum ersten Mal auf einen unbekannten Schwachstellentyp stoßen.

Punktevergabe & XP

Jede Phase wird unabhängig bewertet. Eine korrekte Antwort beim ersten Versuch verdient die volle Phasen-XP; wiederholte falsche Versuche und Hinweisnutzung reduzieren sie beide.

PhasenergebnisOhne HinweisMit Hinweis
Beim 1. Versuch korrekt100 XP50 XP
Beim 2. Versuch korrekt60 XP30 XP
Beim 3. Versuch oder später korrekt30 XP15 XP
Maximum pro Challenge (beide Phasen beim ersten Versuch, keine Hinweise)200 XP

Die Hinweisreduktion ist ein 50%-Schnitt mit einer Untergrenze von 10 XP, sodass selbst eine Drittversuch-Phase mit Hinweis noch mindestens 10 XP verdient. Die beiden Phasen laufen unabhängig — ein Hinweis oder falscher Versuch in Phase 1 beeinflusst Phase 2 nicht.

Was passiert, wenn Sie falsch raten

Der erste falsche Versuch in einer der Phasen fordert Sie auf, am gleichen Code erneut zu versuchen. Nach dem zweiten falschen Versuch in Phase 1 erscheint ein kurzer Story-Dialog, der die realen Konsequenzen der von Ihnen verpassten Schwachstelle erklärt, bevor Sie erneut versuchen können. Es gibt keine Versuchsobergrenze — Sie können weiter versuchen, aber jeder zusätzliche Versuch nach dem dritten begrenzt die Phase auf 30 XP.

Challenge-Abschluss

Nach Abschluss beider Phasen sehen Sie eine Punktaufschlüsselung:

app.securecodinghub.com/topic/sql-injection/challenge/0
Challenge abgeschlossen
+200 XP
Phase 1 — Schwachstelle finden100 / 100
Phase 2 — Lösung wählen100 / 100
Nächste Schritte: Erkunden Sie Lernmodus für interaktive Angriffsszenario-Walkthroughs oder springen Sie direkt vom Dashboard ins Üben.

Den Ablauf von Phase 1 zu Phase 2 lesen

Die zweiphasige Struktur existiert, weil Schwachstellenerkennung und Abhilfe unterschiedliche Fähigkeiten sind. Phase 1 trainiert Ihr Auge: Bei einer vollständigen Funktion oder Methode, welche Zeile ist die gefährliche. Sie werden nicht gebeten, Code zu schreiben; Sie werden gebeten, ihn so zu lesen, wie ein Reviewer es tun würde. Die verwundbare Zeile ist selten die syntaktisch interessanteste. Sie ist meist eine leise Zeile, die etwas tut, was ein Entwickler ohne Nachzudenken schreiben würde, wie das Verketten eines Anfrageparameters in einen String, der später geparst wird.

Phase 2 trainiert Ihr Urteilsvermögen. Sobald Sie wissen, wo das Problem liegt, zeigt Ihnen die Plattform mehrere plausible Lösungen. Die meisten kompilieren, laufen und sehen vernünftig aus. Nur eine schließt die Schwachstelle vollständig. Einige Optionen flicken das offensichtliche Symptom, während das zugrunde liegende Primitiv unberührt bleibt. Einige Optionen korrigieren über und brechen die Funktion. Das Ziel von Phase 2 ist es, Sie darüber nachdenken zu lassen, warum eine Lösung funktioniert, nicht nur ob sie sicherer aussieht als das Original. Behandeln Sie die falschen Antworten als Lernhilfe: jede ist ein echter Fehler, den echte Entwickler in echten Pull Requests machen.

Warum Raten die Lernkurve ruiniert

Das Hinweissystem halbiert die XP für eine Phase (mit einer Untergrenze von 10 XP), was wie eine Strafe klingt, aber als Tausch strukturiert ist. Der Tausch ist sinnvolle Führung gegen eine niedrigere Punktzahl. Raten ohne Hinweis kostet Sie die gleiche XP und lehrt Sie nichts, weil die Feedback-Schleife zu grob ist, um daraus zu lernen. Wenn Sie sich beim Lesen des Ausschnitts für weniger als dreißig Sekunden vor dem Klicken finden, raten Sie fast sicher. Verlangsamen Sie sich, lesen Sie den Ausschnitt zweimal, stellen Sie eine Hypothese auf, wo die Vertrauensgrenze liegt, und klicken Sie dann.

Der richtige Rhythmus für eine neue Schwachstellenklasse ist sorgfältig zu lesen, den Hinweis zu verwenden, wenn Sie feststecken, und die Punktreduzierung als Kosten des Lernens zu akzeptieren. Nach drei oder vier Challenges in derselben Klasse benötigen Sie den Hinweis nicht mehr. Nach zehn beginnen Sie, dasselbe Muster in Ihrem eigenen Code zu sehen. Diese Kurve kann nicht durch Raten verkürzt werden. Für tieferen Kontext zu den Angriffsketten hinter diesen Ausschnitten versuchen Sie das passende Lernszenario in Lernmodus.