Saltar para o conteúdo principal
🔒 Modo de pré-visualização. As primeiras quinze aulas de Foundations são grátis; esta é Pro. Inicie um trial de 7 dias para desbloquear o editor, as dicas AI e o resto do programa. Cartão necessário, cancele a qualquer momento no Dashboard.Iniciar trial de 7 dias →
← CursosAI Engineering with PythonMódulo 3 · RAG (Geração Aumentada por Recuperação)Filtragem de metadadoswrite39 / 105
+75 XP
Tarefa
📝 **Pergunta:** **Escreva a função** \`safe_search(query, filter)\` que protege um RAG multilocatário contra a classe de vazamento nº 1 — um filtro \`tenant_id\` ausente. Regras: - Se \`filter\` não é um dict → raise \`ValueError("filter must be a dict")\`. - Se \`tenant_id\` estiver ausente OU vazio/falso → raise \`ValueError("SEGURANÇA: o filtro tenant_id é obrigatório e não vazio")\`. - Caso contrário, retorne \`f"OK | {query!r} com escopo para o locatário {filter['tenant_id']!r}"\`. Em seguida, execute-o em quatro formas de solicitação (duas reais, duas inseguras): \`\`\` OK | 'política de reembolso' com escopo para o inquilino 'acme' BLOQUEADO | 'tabela salarial' | SEGURANÇA: o filtro tenant_id é obrigatório e não vazio OK | 'histórico de pedidos' com escopo para o inquilino 'globex' BLOQUEADO | 'Chaves de API' | SEGURANÇA: o filtro tenant_id é obrigatório e não vazio \`\`\` O caso da string vazia é o sorrateiro - \`"tenant_id" in filter\` passaria, mas \`filter.get("tenant_id")\` retorna falso. **Sempre verifique a veracidade, nunca apenas a presença de chave.** Um frontend mal configurado padronizando \`tenant_id\` para \`""\` causou vazamentos entre inquilinos no mundo real. 📋 Escolha a resposta certa. 💡 **Dica:** Releia a teoria acima se não tiver certeza.
✏️ Escreve o teu código aqui
🐍
A carregar Python...
Download único (~1 MB). Depois, instantâneo.
📊 Resultado
Clica em Executar para ver o resultado...

💬 Discussão

Seja o primeiro a fazer uma pergunta ou compartilhar uma dica.
Faça login para entrar na discussão. A leitura é gratuita.
Carregando discussão…