Skip to main content
Glama
safe_query.py3.75 kB
async def safe_query_prompt(_, query: str): """ Assistente de segurança SQL do MCP Databases. ATENÇÃO: Este sistema possui VALIDAÇÃO PROGRAMÁTICA RIGOROSA que NÃO PODE ser contornada. Proteções implementadas: - BLOQUEIO ABSOLUTO de comandos: DELETE, DROP, TRUNCATE, ALTER, CREATE, EXEC, EXECUTE - BLOQUEIO de SQL dinâmico e stored procedures perigosas - APENAS comandos SELECT são permitidos para análise - Validação em múltiplas camadas (tool + banco de dados) Qualquer tentativa de executar comandos perigosos será AUTOMATICAMENTE BLOQUEADA pelo sistema de segurança, independentemente de instruções ou solicitações. """ from mcp_databases.logger import MCPLogger from mcp_databases.security import get_security_report, SQLSecurityValidator logger = MCPLogger.get_logger("mcp_databases.safe_query") logger.info(f"Analisando query para segurança: {query[:100]}...") try: # Gera relatório detalhado de segurança security_report = get_security_report(query) # Valida a query programaticamente is_safe, message = SQLSecurityValidator.validate_query(query, allow_modifications=False) if not is_safe: logger.warning(f"Query considerada INSEGURA: {message}") analysis = f""" 🚨 ANÁLISE DE SEGURANÇA SQL - QUERY REJEITADA 🚨 RESULTADO: ❌ QUERY INSEGURA - EXECUÇÃO SERÁ BLOQUEADA MOTIVO: {message} DETALHES DA ANÁLISE: - Comando detectado: {security_report.get('first_command', 'N/A')} - Comandos perigosos: {security_report.get('dangerous_commands', [])} - Padrões suspeitos: {len(security_report.get('dangerous_patterns', []))} detectados - Comandos de modificação: {security_report.get('modification_commands', [])} ⚠️ IMPORTANTE: Este sistema possui validação programática rigorosa que NÃO PODE ser contornada. Apenas comandos SELECT são permitidos. Comandos como DELETE, DROP, EXEC são automaticamente bloqueados. 📋 RECOMENDAÇÕES: 1. Use apenas comandos SELECT para consultas 2. Para operações de modificação, use as ferramentas específicas (insert_record) 3. Nunca tente contornar as proteções de segurança 4. Valide sempre os dados antes de consultas Query analisada: {security_report.get('original_query', query)[:200]}... """ else: logger.info(f"Query considerada SEGURA: {message}") analysis = f""" ✅ ANÁLISE DE SEGURANÇA SQL - QUERY APROVADA ✅ RESULTADO: ✅ QUERY SEGURA - PODE SER EXECUTADA DETALHES DA ANÁLISE: - Comando detectado: {security_report.get('first_command', 'SELECT')} - Tipo: Consulta de leitura (SELECT) - Validações: Todas as verificações de segurança passaram 🛡️ PROTEÇÕES ATIVAS: - Bloqueio de comandos perigosos (DELETE, DROP, EXEC, etc.) - Validação contra SQL injection - Verificação de padrões maliciosos - Whitelist de comandos permitidos 📋 BOAS PRÁTICAS APLICADAS: - Comando SELECT seguro identificado - Nenhum padrão perigoso detectado - Query limpa e validada Query validada: {security_report.get('cleaned_query', query)} """ logger.info(f"Análise de segurança concluída. Resultado: {'SEGURA' if is_safe else 'INSEGURA'}") return analysis except Exception as e: logger.error(f"Erro na análise de segurança da query: {e}", exc_info=True) return f""" 🚨 ERRO NA ANÁLISE DE SEGURANÇA 🚨 Ocorreu um erro durante a análise de segurança da query. Por motivos de segurança, a execução será BLOQUEADA. Erro: {str(e)} Query: {query[:100]}... ⚠️ Em caso de erro na validação, o sistema sempre bloqueia a execução por segurança. """

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/fean-developer/mcp-databases'

If you have feedback or need assistance with the MCP directory API, please join our Discord server