Vai al contenuto principale
🔒 Modalità anteprima. Le prime quindici lezioni di Foundations sono gratuite; questa è Pro. Avvia un trial di 7 giorni per sbloccare l'editor, i suggerimenti AI e il resto del programma. Carta richiesta, disdici in qualsiasi momento dalla Dashboard.Avvia trial di 7 giorni →
← CorsiAI Engineering with PythonModulo 3 · RAG (Retrieval-Augmented Generation)Filtraggio dei metadatiwrite39 / 105
+75 XP
Compito
📝 **Domanda:** **Scrivi la funzione** \`safe_search(query, filter)\` che protegge un RAG multi-tenant dalla classe di leak n. 1: un filtro \`tenant_id\` mancante. Regole: - Se \`filter\` non è un dict → solleva \`ValueError("il filtro deve essere un dict")\`. - Se \`tenant_id\` è assente OPPURE vuoto/falsy → solleva \`ValueError("SICUREZZA: il filtro tenant_id è obbligatorio e non vuoto")\`. - Altrimenti restituisce \`f"OK | {query!r} con ambito tenant {filter['tenant_id']!r}"\`. Quindi eseguilo contro quattro forme di richiesta (due reali, due non sicure): \`\`\` Va bene | "politica di rimborso" limitata all'inquilino "acme" BLOCCATO | 'tabella degli stipendi' | SICUREZZA: il filtro tenant_id è obbligatorio e non vuoto Va bene | 'cronologia ordini' con ambito tenant 'globex' BLOCCATO | 'Chiavi API' | SICUREZZA: il filtro tenant_id è obbligatorio e non vuoto \`\`\` Il caso della stringa vuota è quello subdolo: \`"tenant_id" in filter\` passerebbe, ma \`filter.get("tenant_id")\` restituisce false. **Controlla sempre la verità, mai solo la presenza della chiave.** Un frontend configurato in modo errato con il valore predefinito di \`tenant_id\` su \`""\` ha causato perdite di dati tra tenant nel mondo reale. 📋 Scegli la risposta giusta. 💡 **Suggerimento:** Rileggi la teoria sopra se non sei sicuro.
✏️ Scrivi il tuo codice qui
🐍
Caricamento Python...
Download una tantum (~1 MB). Poi è istantaneo.
📊 Risultato
Premi Esegui per vedere il risultato...

💬 Discussione

Sii il primo a fare una domanda o condividere un consiglio.
Accedi per partecipare alla discussione. La lettura è gratuita.
Caricamento discussione…