Seus dados ficam onde devem ficar.
Um resumo para quem avalia TI e segurança: como o SnagBane é implantado, como controla o acesso, como é protegido e exatamente o que sai do seu servidor.
Implantação e dados
- Auto-hospedado. O SnagBane é um software que você instala com Docker, em uma VPS ou no cPanel. Formulários, respostas, arquivos e contas ficam no seu próprio banco de dados (MySQL/MariaDB, PostgreSQL ou SQLite) e no seu próprio armazenamento.
- Sem senhas padrão compartilhadas. O banco de dados do Docker inicia com uma senha de instalação que o instalador troca por uma senha aleatória forte;
php artisan snagbane:db-passworda altera depois. - Armazenamento de arquivos privado fora da raiz web, com nomes de arquivo aleatórios.
- Funciona em uma rede interna. O plano Free não precisa de acesso à internet; Business e Enterprise precisam de HTTPS de saída para a verificação da licença.
Identidade e acesso
- Login único com Microsoft Entra ID, Google Workspace, Okta e qualquer provedor de identidade SAML 2.0, como AD FS ou Ping (Business e Enterprise) – apenas respostas SAML assinadas a logins que o próprio SnagBane iniciou, cada uma aceita uma única vez. Logins pelo diretório nunca criam administradores, e o mapeamento de papéis por grupos só pode elevar um papel.
- Verificação em duas etapas para contas do SnagBane: um aplicativo autenticador (a chave de configuração pode ir para um gerenciador de senhas) ou chaves de segurança FIDO2 e chaves de acesso — YubiKey, Windows Hello, Gerenciador de Senhas do Google, Chaves do iCloud. O método mais forte é pedido primeiro; os códigos de recuperação de uso único são o caminho de volta, nunca só a senha. Pode ser obrigatória para administradores, e um administrador pode exigir uma nova configuração.
- Bloqueio de conta após tentativas de login malsucedidas repetidas – também para e-mails desconhecidos, para que não seja possível descobrir quais contas existem –, regras de senha rígidas e hash bcrypt.
- Papéis e espaços de trabalho: proprietários, administradores, editores, leitores e respondentes; regras de acesso por formulário, portal e espaço de trabalho. Visitantes bloqueados veem apenas o título e a descrição, nunca as perguntas.
- Pessoas novas não recebem direito de edição por padrão – o papel padrão é respondente.
Segurança da aplicação
- Content Security Policy rígida com nonces por requisição, proteção contra clickjacking, HSTS em HTTPS, nosniff e política de referenciador. Proteção contra CSRF e fixação de sessão.
- Uploads verificados com uma lista de extensões permitidas e inspeção do conteúdo; scripts, executáveis, SVG/HTML e extensões duplas são bloqueados.
- Proteção contra SSRF em todo webhook e integração: endereços privados e de metadados são bloqueados (resistente a DNS rebinding), com uma lista de hosts internos confiáveis mantida pelo administrador.
- Segredos criptografados com a chave da sua aplicação. Tokens de API, links de aprovação e links de edição e retomada são guardados apenas como hash.
- Validação no servidor de cada resposta, cada caminho de ramificação e cada cálculo; as respostas de quizzes nunca chegam ao navegador; injeção de fórmulas é neutralizada nas exportações para CSV, Excel e Planilhas Google.
- Links montados a partir do endereço configurado, nunca do cabeçalho Host da requisição.
Monitoramento e auditoria
- Log de auditoria de logins, administração, exportações e decisões de aprovação, incluindo quem trocou um aprovador e por quê.
- Envio para o SIEM: cada entrada também é gravada como uma linha JSON plana em um arquivo diário, pronta para Microsoft Sentinel, Elastic ou um Splunk Universal Forwarder. Exportação em CSV ou JSON Lines.
- Webhooks assinados (HMAC-SHA256 com carimbo de data e hora), para que os destinatários possam verificar cada chamada.
Atualizações e cadeia de suprimentos
- Atualizações assinadas: cada versão é verificada com Ed25519 antes da instalação e aplicada em modo de manutenção, com reversão em um clique.
- Atualizações limpas: arquivos removidos em uma versão também saem do seu servidor, então uma instalação atualizada é igual a uma instalação nova.
- Comprovantes de licença são assinados e verificados com uma chave embutida no app – nenhuma configuração de ambiente desbloqueia um plano pago.
Configurações que você controla
Padrões seguros já vêm ativados. Em Configurações → Segurança você pode reforçá-los ainda mais:
- Exigir verificação em duas etapas para administradores
- Tamanho mínimo da senha (maiúsculas, minúsculas e números são sempre exigidos) e duração da sessão
- Extensões de arquivo permitidas e tamanho máximo de upload
- Hosts privados permitidos para webhooks e integrações – todo o resto interno é bloqueado
- Locais e contas no SharePoint, OneDrive e Google Drive que os editores podem usar (administradores podem escolher qualquer um)
- Se contas Microsoft, Google e Okta também podem usar senha; contas desativadas no Entra ID ou no Google Workspace deixam de entrar com ela
- Gravar cada resposta em um arquivo de log JSON para o seu coletor de logs
- Retenção de dados: excluir respostas antigas automaticamente após o período que você escolher (veja GDPR)

Arquitetura
Uma aplicação web no seu servidor – sem nenhum serviço de nuvem nosso no caminho dos seus dados.
- Aplicação: PHP 8.3+ (Laravel) atrás do seu servidor web, ou a imagem Docker. O app no navegador vem do mesmo endereço; não são carregados scripts, fontes nem CDNs de terceiros, e a Content-Security-Policy permite apenas o seu próprio servidor.
- Banco de dados: MySQL/MariaDB, PostgreSQL ou SQLite – formulários, respostas, aprovações, contas e configurações. Senhas e chaves de API das integrações são criptografadas com a chave da própria instalação (
APP_KEY). - Arquivos: uploads, assinaturas e PDFs gerados na pasta
storage, fora da raiz web, com nomes aleatórios; entregues só depois de uma verificação de acesso. - Agendador: uma entrada de cron (
schedule:runa cada minuto) envia lembretes, aplica a política de retenção e verifica atualizações e a licença. - Endereços públicos: formulários (
/f/…), portais (/p/…), links de aprovação (/approve/…) e comprovantes (/r/…) – cada um verifica a própria regra de acesso ou um token assinado. Todo o resto (/app,/api) exige uma conta conectada; a API REST (Business e Enterprise) e o SCIM (Enterprise) exigem tokens. - Os backups são seus: o banco de dados mais a pasta
storage, incluindostorage/.envcom a chave que descriptografa os segredos guardados.
O que sai do seu servidor
O SnagBane não tem analytics nem telemetria. Por conta própria, ele faz apenas estas conexões:
| Conexão | O que é enviado | Para | Quando |
|---|---|---|---|
| Verificação de atualizações | Edição, versão, versão do PHP e endereço do site. Com uma licença, também: a chave de licença, o ID de instalação do Freemius e um ID de instalação aleatório | Serviço de atualização do SnagBane (Cloudflare) | Diariamente e quando um administrador verifica; desative com SNAGBANE_UPDATES=false |
| Download da atualização | Apenas a requisição do pacote assinado | Serviço de atualização do SnagBane | Quando um administrador instala uma atualização |
| Ativação da licença (Business, Enterprise) | A chave de licença, um ID de instalação aleatório, endereço e nome do site, a versão e o nome e o e-mail do administrador que ativa | Freemius (nosso revendedor) | Uma vez, ao adicionar a licença |
| Verificação da licença (Business, Enterprise) | A chave de licença, o ID de instalação do Freemius, o ID de instalação aleatório e a versão | Freemius e o serviço de licenças do SnagBane | Diariamente; a cada hora enquanto uma verificação falha |
E estas, apenas se você as configurar:
| O que você ativa | O que é enviado | Para |
|---|---|---|
| Notificações, pedidos de aprovação e comprovantes | O serviço de e-mail que você configura (SMTP ou API) | |
| Login e diretório | Requisições de login; leituras do diretório para seletores de pessoas, gestores e grupos | Microsoft Entra ID, Google Workspace, Okta ou seu provedor de identidade SAML |
| Integrações e webhooks | As respostas e os arquivos que cada um deve enviar | Os serviços que você conecta, nos eventos que você escolhe |
| Pagamentos em formulários | Valor, moeda, o que está sendo pago e o e-mail do respondente, se conhecido – nunca dados do cartão | Stripe ou PayPal |
| Log de auditoria para o seu SIEM | Entradas do log de auditoria | Seu Sentinel, Splunk, Elastic ou endpoint HTTPS |
| Tradução automática | Os textos de formulário que você manda traduzir | DeepL, Azure, Google ou LibreTranslate |
| Notificações do app para celular | Um sinal vazio para despertar – depois o celular busca a notificação no seu servidor | O serviço de push do navegador da pessoa |
| Importar um formulário por link | Uma requisição para a página pública desse formulário | Google Forms ou Microsoft Forms, quando um editor importa um |
| Opções de uma lista | Uma requisição para a lista | O endereço CSV, a lista do SharePoint, a tabela do Excel ou a planilha Google que você conecta |
Documentos para avaliadores
- Política de divulgação de vulnerabilidades – como reportar um problema de segurança – e security.txt.
- Adendo de processamento de dados – para os dados pessoais que você possa compartilhar conosco em pedidos de suporte (em inglês).
- GDPR e proteção de dados, a política de privacidade e o contrato de licença (os dois últimos em inglês).
- O código do servidor acompanha o software em forma legível, para que sua equipe possa revisá-lo e testar sua segurança na sua própria instalação (EULA, seção 2.3).
Não declaramos certificações como ISO 27001 ou SOC 2: o SnagBane roda dentro da sua infraestrutura, sob os seus controles e auditorias.
Perguntas de avaliadores
Podemos rodá-lo sem acesso à internet?
No plano Free, sim – não é preciso nada. Business e Enterprise precisam de HTTPS de saída para renovar o comprovante de licença pelo menos a cada 2 dias; formulários, respostas e aprovações continuam funcionando mesmo que os recursos pagos fiquem pausados.
Quem pode ver as respostas?
Apenas as pessoas a quem você dá acesso ao espaço de trabalho do formulário, além dos aprovadores, para as solicitações atribuídas a eles. Os aprovadores abrem os arquivos pela aprovação, nunca por um link público.
Como as permissões do Microsoft 365 são configuradas?
No seu próprio locatário: o script do PowerShell recomendado cria ali o registro de aplicativo, então você vê e controla cada permissão. Veja permissões.
Como levamos o log de auditoria para o Sentinel ou o Splunk?
Com o plano Enterprise, o SnagBane o envia direto para o Microsoft Sentinel, Splunk, Elastic ou qualquer endpoint HTTPS. Você também pode apontar um coletor para os arquivos diários em JSON Lines em storage/logs/audit. Veja o guia de SIEM.
Como reportamos um problema de segurança?
Envie um e-mail conforme descrito na política de divulgação de vulnerabilidades. Por favor, não abra antes uma issue pública.
Onde ficam os backups?
Onde você faz o backup do seu servidor: o banco de dados e a pasta storage. O SnagBane não guarda cópias em nenhum outro lugar.