Documentação SafeNode
Tudo em um só lugar: Quickstart, Guia de Integração, API Reference e Referência de Funções. Use o menu à esquerda ou Ctrl+K para buscar.
Quickstart 5 minutos
Integre a proteção SafeNode em 4 passos simples.
1. Instale o middleware
No início do seu index.php (ou arquivo de entrada):
<?php
require_once '/caminho/para/safenode/includes/SafeNodeMiddleware.php';
SafeNodeMiddleware::protect();
// Seu código normal
?>
2. Cadastre o site
- Acesse o painel SafeNode
- Gerenciar Sites → Adicionar site
- Informe o domínio (ex: seusite.com)
- Salve
3. Gere a chave de API (Verificação Humana)
- Verificação Humana → API Keys
- Criar chave → escolha o site
- Copie a chave gerada
4. Teste a proteção
Simular ataque (deve bloquear):
curl "https://seusite.com/?id=1' OR '1'='1"
# Resposta: 403 Acesso negado
Requisição normal (deve permitir):
curl "https://seusite.com/"
# Resposta: 200 OK
Próximos passos
- SDK React: npm install @safenode/react e use <SafeNodeProvider>
- PHP puro: O middleware já protege; ajuste o caminho em require_once
- WordPress: Use o plugin em sdk/wordpress/
Guia de Integração
Integre a verificação humana do SafeNode em 3 passos.
1. Cadastre seu site
Em Sites, adicione o domínio que deseja proteger (ex: meusite.com). O domínio deve corresponder ao que o usuário acessa (com ou sem www).
2. Crie uma API Key
Em Verificação Humana → API Keys, gere uma chave. Configure os domínios permitidos (separados por vírgula) para restringir o uso.
3. Adicione o código
Modo simples — uma linha (auto-init em todos os formulários):
<link rel="preconnect" href="https://safenode.cloud">
<script src="https://safenode.cloud//sdk/safenode-hv.js" data-api-key="sk_sua_api_key" async></script>
<form><input name="email"><button type="submit">Enviar</button></form>
Controle manual — use SafeNodeHVConfig ou instância SafeNodeHV(apiBaseUrl, apiKey, options) com attachToForm('#meuFormulario'). Opções: confirmCheckbox, initOnInteraction, silentVerify, performanceRum.
O SDK (JS, React, Vue) carrega automaticamente coleta comportamental e Core Web Vitals (LCP, FCP, CLS) para a página Performance. Documentação completa: Verificação Humana.
Uso em formulários
O SDK injeta automaticamente um campo oculto com o token. Ao enviar o formulário via AJAX ou submit normal, inclua no body:
- token – valor do campo safenode_hv_token
- nonce – valor do campo safenode_hv_nonce
- js_enabled – "1"
No backend, chame POST /api/sdk/validate.php com esses dados e a API key. Se retornar success: true, o usuário passou na verificação.
Fluxo recomendado
- Usuário carrega a página → SDK chama init automaticamente
- Usuário preenche o formulário e envia
- Seu backend recebe o form, chama validate com token/nonce/js_enabled
- Se validate retornar sucesso → processar o form; senão → rejeitar
Dicas
- Nunca exponha a API key no frontend de forma que possa ser extraída por terceiros
- Para formulários via AJAX, garanta que token e nonce sejam enviados no body
- O token expira; se o usuário demorar muito, peça para recarregar a página
API Reference
Endpoints do SafeNode para verificação humana (Human Verification). Use a API Key no header X-API-Key ou no body.
Base URL
https://safenode.cloud//api/sdk
1. Init – Inicializar desafio
GET /init.php
Retorna um token único para o formulário. O token expira conforme configurado na API key (padrão: 1 hora).
Parâmetros: api_key (obrigatório) – Header X-API-Key ou POST/GET
{
"success": true,
"token": "64 caracteres hex",
"nonce": "32 caracteres hex",
"timestamp": 1234567890,
"max_age": 3600
}
Erros: 401 (API key inválida), 403 (origin não permitido), 429 (rate limit)
2. Validate – Validar verificação
POST /validate.php
Valida o token e o nonce. Opcional: envie fingerprint (quando o front envia) para considerar histórico comportamental.
{
"api_key": "sua_api_key",
"token": "token do init",
"nonce": "nonce do init",
"js_enabled": "1",
"fingerprint": "opcional - para histórico comportamental"
}
Erros: 400 (token inválido/expirado ou histórico negativo), 401 (API key inválida), 429 (rate limit)
Rate limiting
Limites por IP e por API key conforme security_level:
- low: 200 req/min
- medium: 100 req/min
- high: 50 req/min
- under_attack: 20 req/min
Referência de Funções
Referência completa das funções internas do SafeNode. Projetado para máxima performance em triagem de ameaças e gerenciamento de infraestrutura cloud.
Esta documentação cobre os principais métodos utilitários usados em todo o core do SafeNode, desde a conexão segura com o banco de dados até os motores de detecção em tempo real.
Quick Start
// 1. Aplicar headers de segurança
require_once 'includes/HVSecurityHeaders.php';
HVSecurityHeaders::apply();
// 2. Proteção completa com middleware
require_once 'includes/SafeNodeMiddleware.php';
SafeNodeMiddleware::protect();
// 3. Conectar ao banco
$db = getSafeNodeDatabase();
// 4. Validar input
$input = $_POST['data'] ?? '';
if (HVSecurityHeaders::detectAttack($input)) {
http_response_code(403);
exit;
}
// 5. Sanitizar antes de usar
$clean = HVSecurityHeaders::sanitizeInput($input);
Segurança
Headers HTTP, CSRF, XSS, SQL Injection, Rate Limiting, Threat Detection
Infraestrutura
Conexão PDO, Configuração, Base URL, Validação de Ambiente
Performance
Monitoramento, Métricas, Alertas, Logging, Cache
Infraestrutura Central
Inicializa a conexão PDO com o banco de dados configurado (safend). Usa caching estático interno para evitar múltiplas conexões. Retorna false em caso de erro.
Características: Conexão persistente, tratamento de exceções, timeout de 5 segundos, charset UTF-8MB4, prepared statements desabilitados por padrão.
$db = getSafeNodeDatabase();
if (!$db) {
die("Erro ao conectar ao banco de dados");
}
$stmt = $db->prepare("SELECT * FROM tabela WHERE coluna = ?");
$stmt->execute([$valor]);
Verifica se o banco de dados safend existe e está acessível.
if (!safenodeDatabaseExists()) {
error_log("Banco de dados safend não encontrado");
// Criar banco ou exibir erro
}
Retorna a URL base do SafeNode detectada automaticamente do ambiente.
Obtém o IP real do cliente. Compatível com Cloudflare (CF-Connecting-IP), proxies (X-Forwarded-For, X-Real-IP) e REMOTE_ADDR.
Retorna instância Redis quando SAFENODE_REDIS_HOST está configurado. Usado para rate limit distribuído. Retorna null se Redis não disponível.
Security Headers
Aplica todos os headers HTTP de segurança necessários: XSS Protection, Content-Type Options, Frame Options, CSP, HSTS (apenas HTTPS), Referrer Policy, Permissions Policy e Cache Control.
// No início do arquivo PHP
require_once 'includes/HVSecurityHeaders.php';
HVSecurityHeaders::apply();
// Headers aplicados automaticamente:
// - X-XSS-Protection: 1; mode=block
// - X-Content-Type-Options: nosniff
// - X-Frame-Options: DENY
// - Content-Security-Policy: ...
// - Strict-Transport-Security: ... (apenas HTTPS)
// - Referrer-Policy: strict-origin-when-cross-origin
// - Permissions-Policy: geolocation=(), microphone=(), camera=()
// - Cache-Control: no-store, no-cache, must-revalidate
Sanitiza e valida input JSON ou arrays recursivamente. Remove caracteres de controle, limita tamanho de strings (10KB) e sanitiza chaves.
$rawInput = json_decode(file_get_contents('php://input'), true);
$clean = HVSecurityHeaders::sanitizeInput($rawInput);
// Remove caracteres de controle e limita tamanho
// Sanitiza chaves para permitir apenas alfanuméricos, underscore e hífen
Valida o tamanho do payload HTTP. Retorna false e envia HTTP 413 se exceder o limite (padrão: 10KB).
if (!HVSecurityHeaders::validatePayloadSize(5120)) {
// Payload maior que 5KB - requisição rejeitada
exit;
}
Valida formato de API key. Formato esperado: prefixo + caracteres hexadecimais.
$apiKey = $_POST['api_key'] ?? '';
if (!HVSecurityHeaders::validateApiKeyFormat($apiKey)) {
http_response_code(400);
echo json_encode(['error' => 'Formato de API key inválido']);
exit;
}
Valida formato de token. Deve ser hexadecimal de exatamente 64 caracteres.
Registra ameaça detectada nos logs de segurança.
// Chamado internamente por detectAttack() quando $logToSecurityTable = true
// Use apenas para registrar ameaças detectadas por outros meios
Detecção de Ameaças
Analisa strings em busca de padrões de ataque: SQL Injection, XSS, Command Injection, Path Traversal. Retorna o tipo da ameaça ou null se seguro.
Uso: Sempre sanitize e valide input antes de processar. Use $logToSecurityTable = false para não registrar em contexto de teste.
$userInput = $_POST['search'] ?? '';
$threat = HVSecurityHeaders::detectAttack($userInput);
if ($threat) {
http_response_code(403);
echo json_encode([
'error' => 'Ataque detectado: ' . $threat
]);
exit;
}
// Input seguro, processar normalmente
processSearch($userInput);
Controle de Fluxo
Rate limiting por IP. Prioridade: Redis (distribuído) > banco de dados > arquivo temporário. Retorna false se o limite foi excedido.
Configuração: Defina SAFENODE_REDIS_HOST no .env para rate limit distribuído em múltiplos workers.
// Limitar a 30 requisições por minuto
$ip = $_SERVER['REMOTE_ADDR'];
if (!HVSecurityHeaders::checkIpRateLimit($ip, 30, 60)) {
http_response_code(429);
header('Retry-After: 60');
echo json_encode([
'error' => 'Rate limit excedido. Tente novamente em 60 segundos.'
]);
exit;
}
// Requisição permitida, continuar processamento
Proteção CSRF
Gera um novo token CSRF criptograficamente seguro (64 caracteres hex) e armazena na sessão com timestamp.
Obtém o token CSRF atual da sessão, ou gera um novo se não existir.
Valida o token CSRF usando comparação segura (hash_equals).
// No formulário
$token = CSRFProtection::getToken();
echo '';
// Na validação do POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$token = $_POST['csrf_token'] ?? '';
if (!CSRFProtection::validateToken($token)) {
http_response_code(403);
die('Token CSRF inválido ou expirado');
}
// Processar formulário
}
Retorna HTML do campo hidden com o token CSRF já formatado e escapado.
echo '';
Valida automaticamente o token de POST ou GET. Retorna false e envia HTTP 403 se inválido.
Sanitização de Input
Escapa string para uso em HTML (htmlspecialchars com ENT_QUOTES e UTF-8).
$userInput = $_GET['name'] ?? '';
echo '' . XSSProtection::escape($userInput) . '';
Escapa string para uso em atributos HTML.
Escapa string para uso em JavaScript (JSON encode).
Sanitiza string removendo tags HTML e caracteres perigosos.
Sanitiza array recursivamente aplicando sanitização em todos os valores string.
Validação de Dados
Valida formato de email usando filter_var com FILTER_VALIDATE_EMAIL.
Valida formato de URL.
Valida formato de domínio.
Valida string com tamanho mínimo e máximo.
Valida se o valor é um inteiro.
Gerenciamento de Planos
Obtém a subscription ativa do usuário. Se não existir, cria automaticamente um free trial de 14 dias com 10.000 eventos.
$manager = new SubscriptionManager(getSafeNodeDatabase());
$subscription = $manager->getUserSubscription($userId);
if ($subscription) {
echo "Plano: " . $subscription['plan_type'];
echo "Eventos usados: " . $subscription['events_used'] . "/" . $subscription['events_limit'];
}
Verifica se o usuário pode usar um evento (tem cota disponível). Retorna false se a cota foi excedida ou a subscription está inativa.
$manager = new SubscriptionManager(getSafeNodeDatabase());
if (!$manager->canUseEvent($userId)) {
http_response_code(402);
echo json_encode(['error' => 'Cota de eventos excedida']);
exit;
}
// Processar evento
processEvent();
$manager->incrementEvent($userId);
Incrementa o contador de eventos usados do usuário.
Retorna estatísticas de uso: eventos usados, limite, porcentagem, data de reset do ciclo.
Cria free trial de 14 dias com 10.000 eventos para o usuário.
Sistema de Pagamento
Visão Geral
O SafeNode oferece sistema de pagamento integrado suportando PIX e Cartão de Crédito. Processamento seguro com tokenização, confirmação automática e comprovantes em PDF.
Métodos de Pagamento
PIX (Pagamento Instantâneo)
- Pagamento instantâneo via QR Code ou código "Copia e Cola"
- Confirmação automática via webhook e polling
- Disponível 24/7, incluindo finais de semana e feriados
- Download de comprovante em PDF após confirmação
- Verificação automática de status a cada 5 segundos
Cartão de Crédito
- Processamento seguro via tokenização (dados nunca armazenados)
- Suporte a parcelamento em até 12x
- Validação em tempo real de dados do cartão
- Confirmação imediata após processamento
- Proteção PCI-DSS via processador de pagamentos
Fluxo de Pagamento PIX
- Seleção do Plano: Usuário escolhe um plano na página de checkout
- Criação da Cobrança: Sistema cria cobrança e gera identificador único
- Geração do QR Code: Sistema exibe QR Code e código "Copia e Cola" para pagamento
- Pagamento pelo Usuário: Usuário escaneia o QR Code ou copia o código no app do banco
- Verificação Automática: Sistema verifica status a cada 5 segundos via polling
- Webhook (Opcional): Notificação automática quando pagamento é confirmado
- Ativação do Plano: Sistema ativa automaticamente o plano do usuário
- Comprovante: Usuário pode baixar o comprovante em PDF
Fluxo de Pagamento Cartão de Crédito
- Preenchimento do Formulário: Usuário preenche dados do cartão (número, validade, CVV, nome, CPF)
- Tokenização: Dados do cartão são convertidos em token seguro (nunca chegam ao servidor)
- Processamento: Pagamento processado via token
- Validação: Processador valida e processa a cobrança
- Confirmação: Sistema recebe resposta e atualiza status do pagamento
- Ativação: Se aprovado, plano é ativado imediatamente
Status de Pagamento
Segurança e Privacidade
- Dados Sensíveis: Dados de cartão nunca são armazenados no servidor SafeNode
- Tokenização: Cartões convertidos em tokens seguros
- HTTPS: Comunicações criptografadas via SSL/TLS
- PCI-DSS: Conformidade via processador certificado
- Webhooks: Notificações validadas antes de processar
- Logs: Apenas IDs de transação são registrados, nunca dados sensíveis
Informações Técnicas
Identificadores
- TXID: Identificador único da transação
- End-to-End ID: Identificador do PIX confirmado
- Charge ID: Identificador da cobrança de cartão
Endpoints de Pagamento
- api/payments/status - Verificar status de pagamento
- api/payments/pix - Criar cobrança PIX
- api/process-credit-card.php - Processar cartão
- api/tokenize-card.php - Tokenizar cartão
- api/download-receipt.php - Comprovante em PDF
Cupons de Desconto
O sistema suporta cupons de desconto que podem ser aplicados durante o checkout:
- Cupons podem ter desconto percentual ou valor fixo
- Validade configurável (data de expiração)
- Limite de uso por usuário ou global
- Aplicável a planos específicos ou todos os planos
- Rastreamento de uso e histórico
Troubleshooting
Pagamento PIX não confirma
- Verifique se o QR Code não expirou (válido por 30 minutos)
- Confirme se o valor pago corresponde exatamente ao valor da cobrança
- O sistema verifica automaticamente a cada 5 segundos
- Se persistir, entre em contato com o suporte
Cartão recusado
- Verifique se os dados do cartão estão corretos
- Confirme se há limite disponível no cartão
- Entre em contato com o banco emissor do cartão
- Tente novamente com outro cartão
OAuth & IdP (Identity Provider)
O SafeNode oferece dois fluxos OAuth: OAuth legado ("Continuar com SafeNode" para usuários do painel) e IdP ("Entrar com sua empresa" para ecossistemas como KIRVANO, SIRUS, META). O IdP usa usuários provisionados por conta via API.
Gera código de autorização OAuth criptograficamente seguro (32 caracteres hex). Expira em 10 minutos. Verifica rate limiting antes de gerar.
$manager = new OAuthManager(getSafeNodeDatabase());
$code = $manager->generateAuthorizationCode(
$userId,
$appId,
'https://app.com/callback',
['read', 'write'],
$state
);
// Redirecionar para redirect_uri?code=$code&state=$state
header("Location: $redirectUri?code=$code&state=$state");
Troca código de autorização por access token JWT. Valida credenciais do cliente, código não usado, expiração e redirect URI.
$tokenData = $manager->exchangeCodeForToken(
$_GET['code'],
$_POST['client_id'],
$_POST['client_secret'],
$_POST['redirect_uri']
);
if ($tokenData) {
echo json_encode([
'access_token' => $tokenData['access_token'],
'token_type' => 'Bearer',
'expires_in' => 3600,
'scope' => $tokenData['scope']
]);
}
Valida e decodifica token JWT. Retorna dados do usuário e escopos se válido.
Retorna informações do usuário baseado no token e escopos solicitados. Suporta tokens OAuth legado e IdP.
IdP (Identity Provider)
Para SSO "Entrar com sua empresa", use aplicações IdP em safenode_idp_applications. O fluxo usa OAuthManager::generateIdpAuthorizationCode (confirmação imediata, sem email) e usuários em safenode_idp_users provisionados via API.
Valida API key de provisionamento. Retorna ['valid' => true, 'account_id' => int] ou ['valid' => false, 'error' => string].
Cria ou atualiza usuário IdP. $data: email, name, password (plain ou hash bcrypt/argon2), picture. Retorna user_id, sub, email, created.
Gera nova API key para provisionamento. Retorna api_key (exibida uma vez) e key_id.
API de provisionamento. Headers: X-API-Key ou Authorization: Bearer. Body JSON: {"email","name","password","picture"}. Resposta 201: {"success","user_id","sub","email","created"}.
curl -X POST -H "Content-Type: application/json" -H "X-API-Key: idp_xxx" \
-d '{"email":"user@empresa.com","name":"Nome","password":"senha123"}' \
https://safenode.cloud/api/oauth/users.php
Interface: oauth-apps.php?tab=idp — criar apps IdP, gerar API keys, provisionar usuários.
Gerenciamento de API Keys
Gera nova API key para Human Verification. Retorna array com api_key, api_secret e configurações. Armazene o secret com segurança.
$keyData = HVAPIKeyManager::generateKey(
$userId,
'Meu App',
'https://meusite.com',
60, // requisições/minuto
3600, // token expira em 1 hora
'javascript'
);
// Armazene $keyData['api_key'] e $keyData['api_secret'] com segurança
Valida API key e verifica se o domínio de origem está permitido. Retorna dados da key se válida.
Verifica rate limit para API key e IP. Retorna array com allowed (bool) e remaining.
Retorna estatísticas completas: uso, performance, geolocalização para o período especificado (24h, 7d, 30d).
Gera código de integração para JavaScript, React, Vue, Node.js, PHP ou Python.
Verificação Humana SDK
A proteção é baseada em token + nonce validados no backend. Endpoints: init.php (GET — obter token) e validate.php (POST — validar). SDKs: JavaScript, React, Vue, Node.js, PHP (embed ou classe), Python. O script (JS/React/Vue) pode carregar opcionalmente coleta comportamental e Core Web Vitals (LCP, FCP, CLS). Opções: confirmCheckbox, initOnInteraction, silentVerify, performanceRum. Documentação completa em Verificação Humana.
Retorna token e nonce. Requer API key (header X-API-Key). Valida domínio permitido e rate limit.
Valida token, nonce e js_enabled. Opcional: fingerprint para considerar histórico comportamental. Retorna success ou erro.
Coleta comportamental (mouse, cliques, scroll). Aceita api_key no body para uso via SDK (histórico por API key). Usado por silent-verification.js.
Recebe Core Web Vitals (LCP, FCP, CLS, INP). Body: api_key, url, lcp, fcp, cls. Usado por performance-rum.js; o SDK HV carrega esse script automaticamente.
Performance Monitor
Inicia monitoramento de performance. Registra tempo inicial, memória e endpoint.
Finaliza monitoramento e retorna métricas: tempo de resposta, uso de memória, endpoint. Salva no banco se siteId configurado.
$monitor = new PerformanceMonitor(getSafeNodeDatabase(), $siteId);
$monitor->start('/api/endpoint', 'POST');
// Processar requisição
processRequest();
$metrics = $monitor->end();
// $metrics['response_time'] = 0.234
// $metrics['memory_usage'] = 1024000
// $metrics['endpoint'] = '/api/endpoint'
Executa callback e mede tempo de execução da operação específica.
Alert Manager
Cria alerta no sistema. Verifica preferências do usuário antes de enviar notificações. Tipos: attack_detected, rate_limit_exceeded, system_error, etc.
$alertManager = new AlertManager(getSafeNodeDatabase());
$alertId = $alertManager->createAlert(
$siteId,
'attack_detected',
'high',
'SQL Injection Detectado',
'Tentativa de SQL injection detectada do IP ' . $_SERVER['REMOTE_ADDR'],
['ip' => $_SERVER['REMOTE_ADDR'], 'attack_type' => 'sql_injection']
);
Retorna contagem de alertas não lidos para o site/usuário.
SafeNode Middleware
Middleware completo de proteção. Identifica site, verifica status, aplica firewall, geo-blocking, rate limiting e human verification quando necessário.
Funcionalidades: Identificação automática de site, verificação de status ativo, detecção de país por IP, bloqueio geográfico, regras de firewall, rate limiting, desafio humano quando necessário, logging de ameaças.
// No início do arquivo PHP que precisa de proteção
require_once 'includes/SafeNodeMiddleware.php';
// Aplica todas as proteções automaticamente
SafeNodeMiddleware::protect();
// Se passar por todas as verificações, continua execução normal
// Se bloqueado, envia resposta HTTP apropriada e termina execução
UI Helpers
Inclui automaticamente todos os assets do tema (CSS, JS, fonts) necessários para o funcionamento da interface.
require_once 'includes/theme-helper.php';
includeThemeAssets();
Renderiza botão de alternância entre tema claro/escuro com funcionalidade JavaScript integrada.
FAQ
O que é a verificação humana?
Um desafio que confirma que a ação foi feita por um humano (com JavaScript habilitado) e não por um bot. Reduz spam e abuso em formulários.
Preciso de JavaScript?
Sim. A verificação exige que o cliente execute JavaScript. Usuários com JS desabilitado não conseguirão passar.
Como funciona o token?
O endpoint init gera um token único por sessão. O token expira conforme configurado na API key (padrão: 1 hora). Após validar, o nonce é consumido e não pode ser reutilizado.
Erro "Origin não permitido"
O domínio de onde a requisição é feita deve estar na lista de domínios permitidos da API key. Verifique em Verificação Humana → API Keys → Domínios permitidos.
Erro "Token inválido ou expirado"
O token pode ter expirado ou o usuário demorou demais. Peça para recarregar a página e tentar novamente.
Rate limit 429
Muitas requisições do mesmo IP em pouco tempo. Aguarde alguns minutos ou ajuste o security_level do site no painel.
Posso usar em SPA (React, Vue, etc.)?
Sim. Inclua o SDK e chame SafeNodeHV.init() no carregamento. Ao enviar o formulário, inclua token, nonce e js_enabled no payload da sua API.
Onde ver os logs?
Em Verificação Humana → Logs você vê tentativas de init/validate, incluindo falhas e suspeitas.
Troubleshooting
Problemas comuns e como resolver.
403 Acesso negado em requisições legítimas
- Verifique se o site está cadastrado e ativo no painel
- Confirme se o domínio corresponde exatamente (com/sem www)
- Revise regras de firewall e geo-blocking do site
- Verifique logs em Traffic Monitor para ver o motivo do bloqueio
Middleware não carrega
- Confirme o caminho em require_once – use caminho absoluto se necessário
- Verifique se config.php e dependências estão no include path
- Confira permissões de leitura nos arquivos do SafeNode
Banco de dados não conecta
- Verifique credenciais no .env
- Confirme que o banco safend existe
- Execute o script de instalação/migração se necessário
Pagamento PIX não confirma
- Verifique se o QR Code não expirou (válido por 30 minutos)
- Confirme se o valor pago corresponde exatamente ao valor da cobrança
- O sistema verifica automaticamente a cada 5 segundos
Boas Práticas
Segurança
- Sempre use HVSecurityHeaders::apply() no início de arquivos PHP públicos
- Valide e sanitize todos os inputs do usuário antes de processar
- Use CSRFProtection em todos os formulários
- Implemente rate limiting em endpoints sensíveis
- Monitore e logue todas as ameaças detectadas
Performance
- Use getSafeNodeDatabase() que já implementa caching de conexão
- Monitore performance de endpoints críticos com PerformanceMonitor
- Configure rate limits apropriados para evitar abuso
- Use prepared statements para todas as queries SQL
Integração
- Use SafeNodeMiddleware::protect() para proteção completa automática
- Verifique cotas de eventos antes de processar requisições pesadas
- Configure alertas para eventos importantes
- Valide API keys antes de processar requisições de terceiros