Visão geral de segurança

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-password a 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)
Configurações → Segurança

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:run a 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, incluindo storage/.env com 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ãoO que é enviadoParaQuando
Verificação de atualizaçõesEdiçã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órioServiço de atualização do SnagBane (Cloudflare)Diariamente e quando um administrador verifica; desative com SNAGBANE_UPDATES=false
Download da atualizaçãoApenas a requisição do pacote assinadoServiço de atualização do SnagBaneQuando 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 ativaFreemius (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ãoFreemius e o serviço de licenças do SnagBaneDiariamente; a cada hora enquanto uma verificação falha

E estas, apenas se você as configurar:

O que você ativaO que é enviadoPara
E-mailNotificações, pedidos de aprovação e comprovantesO serviço de e-mail que você configura (SMTP ou API)
Login e diretórioRequisições de login; leituras do diretório para seletores de pessoas, gestores e gruposMicrosoft Entra ID, Google Workspace, Okta ou seu provedor de identidade SAML
Integrações e webhooksAs respostas e os arquivos que cada um deve enviarOs serviços que você conecta, nos eventos que você escolhe
Pagamentos em formuláriosValor, moeda, o que está sendo pago e o e-mail do respondente, se conhecido – nunca dados do cartãoStripe ou PayPal
Log de auditoria para o seu SIEMEntradas do log de auditoriaSeu Sentinel, Splunk, Elastic ou endpoint HTTPS
Tradução automáticaOs textos de formulário que você manda traduzirDeepL, Azure, Google ou LibreTranslate
Notificações do app para celularUm sinal vazio para despertar – depois o celular busca a notificação no seu servidorO serviço de push do navegador da pessoa
Importar um formulário por linkUma requisição para a página pública desse formulárioGoogle Forms ou Microsoft Forms, quando um editor importa um
Opções de uma listaUma requisição para a listaO endereço CSV, a lista do SharePoint, a tabela do Excel ou a planilha Google que você conecta

Documentos para avaliadores

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.