Sarcină
📝 **Întrebare:** **Scrieți funcția** \`căutare_sigură(interogare, filtru)\` care protejează un RAG cu mai mulți locatari împotriva clasei de scurgere nr. 1 — un filtru \`tenant_id\` lipsă.
Reguli:
- Dacă \`filtru\` nu este un dict → ridicați \`ValueError(„filtrul trebuie să fie un dict”)\`.
- Dacă \`tenant_id\` este absent SAU gol/fals → ridicați \`ValueError("SECURITY: filtrul tenant_id este obligatoriu și nu este gol")\`.
- În caz contrar, returnați \`f"OK | {query!r} sfera de aplicare a chiriașului {filter['tenant_id']!r}"\`.
Apoi rulați-l pe patru forme de solicitare (două reale, două nesigure):
\`\`\`
OK | „politica de rambursare” vizată chiriașului „acme”
BLOCAT | 'tabel de salarii' | SECURITATE: filtrul tenant_id este obligatoriu și nu este gol
OK | „Istoricul comenzilor” se adresează chiriașului „globex”
BLOCAT | „Cheile API” | SECURITATE: filtrul tenant_id este obligatoriu și nu este gol
\`\`\`
Cazul cu șir gol este cel mai ascuns — ar trece \`"tenant_id" în filter\`, dar \`filter.get("tenant_id")\` returnează fals. **Verificați întotdeauna adevărul, niciodată doar prezența cheii.** Un front-end configurat greșit, care a implicit \`tenant_id\` la \`""\` a provocat scurgeri de informații în lumea reală între chiriași.
📋 Alegeți răspunsul potrivit.
💡 **Sugestie:** Recitiți teoria de mai sus dacă nu sunteți sigur.