Naar hoofdinhoud
🔒 Voorbeeldmodus. De eerste vijftien Foundations-lessen zijn gratis; deze is Pro. Start een 7-daagse trial om de editor, AI-hints en de rest van het curriculum te ontgrendelen. Kaart vereist, op elk moment opzegbaar in Dashboard.Start 7-daagse trial →
← CursussenAI Engineering with PythonModule 3 · RAG (Retrieval-Augmented Generation)Metagegevens filterenwrite39 / 105
+75 XP
Opdracht
📝 **Vraag:** **Schrijf de functie** \`safe_search(query, filter)\` die een multi-tenant RAG beschermt tegen de nr. 1 lekklasse: een ontbrekend \`tenant_id\` filter. Regels: - Als \`filter\` geen dictaat is → raise \`ValueError("filter moet een dictaat zijn")\`. - Als \`tenant_id\` afwezig is OF leeg/onwaar is → raise \`ValueError("BEVEILIGING: filter tenant_id is verplicht en niet leeg")\`. - Retourneer anders \`f"OK | {query!r} gericht op tenant {filter['tenant_id']!r}"\`. Voer het vervolgens uit tegen vier verzoekvormen (twee echte, twee onveilig): \`\`\` Oké | 'restitutiebeleid' gericht op huurder 'acme' GEBLOKKEERD | 'salaristabel' | BEVEILIGING: het filter tenant_id is verplicht en niet leeg Oké | 'bestelgeschiedenis' gericht op tenant 'globex' GEBLOKKEERD | 'API-sleutels' | BEVEILIGING: het filter tenant_id is verplicht en niet leeg \`\`\` De lege tekenreeks is een stiekem geval: \`"tenant_id" in filter\` zou passeren, maar \`filter.get("tenant_id")\` retourneert vals. **Controleer altijd op waarheidsgetrouwheid, nooit alleen op de aanwezigheid van de sleutel.** Een verkeerd geconfigureerde frontend die de \`tenant_id\` standaard instelt op \`""\` heeft in de praktijk tot cross-tenant-lekken geleid. 📋 Kies het juiste antwoord. 💡 **Hint:** Herlees de bovenstaande theorie als je het niet zeker weet.
✏️ Schrijf hier je code
🐍
Python laden...
Eenmalige download (~1 MB). Daarna direct beschikbaar.
📊 Resultaat
Klik op Uitvoeren om het resultaat te zien...

💬 Discussie

Wees de eerste — stel een vraag of deel een tip.
Log in om mee te doen aan de discussie. Lezen is gratis.
Discussie laden…