Perguntas de segurança antes de conectar Stripe, Google ou Slack
Perguntas de segurança antes de conectar Stripe: verifique permissões e scopes, armazenamento de tokens, menor privilégio, logs e o que fazer se um token for roubado.

Por que conectar apps é uma decisão de segurança
Conectar Stripe, Google ou Slack não é só um botão de conveniência. É uma escolha de segurança, porque você está concedendo a outro app acesso contínuo a dinheiro, dados e fluxos de trabalho internos.
Integrações são um ponto de entrada comum para atacantes porque podem contornar as proteções nas quais você foca (senhas e MFA). Se alguém engana um admin para aprovar um app “útil”, ou rouba um token armazenado no seu servidor, o invasor pode agir como essa integração sem fazer o login como um usuário normal.
Também é comum excesso de permissões. Muitos produtos solicitam acesso amplo por padrão para reduzir chamados de suporte. O risco é que uma ferramenta feita para postar uma mensagem no Slack acabe ganhando silenciosamente a capacidade de ler canais, convidar usuários ou exportar dados.
As consequências não são abstratas:
- Dinheiro: reembolsos, mudanças de payout, edição de detalhes de cobrança ou cobranças fraudulentas (dependendo do acesso).
- Dados: e-mails, arquivos, registros de clientes ou conversas internas.
- Reputação e downtime: spam para clientes, exclusão de recursos ou bloqueio durante um incidente.
Alguns termos básicos ajudam a avaliar qualquer conexão:
- Permissões/scopes: as ações e dados específicos que um app está pedindo.
- Token: o segredo que prova que o app tem aquele acesso.
- Webhooks: notificações enviadas para o seu sistema, que podem ser abusadas se não forem verificadas.
Comece com um mapa simples do que você está conectando
Antes de clicar em Conectar, escreva um mapa pequeno da integração. É a forma mais rápida de identificar permissões arriscadas e evitar surpresas.
Comece com um objetivo em uma frase, por exemplo: “Quando um cliente pagar, marcamos a fatura como paga e notificamos o suporte no Slack.” Se você não consegue descrever isso de forma simples, provavelmente vai pedir mais acesso do que precisa.
Depois liste quais sistemas serão tocados. Stripe normalmente significa pagamentos e registros de clientes. Google pode significar e-mail, calendário, arquivos ou contatos. Slack pode significar mensagens, canais e lista de usuários. Cada área tem um raio de impacto diferente se algo der errado.
Um pequeno template que vale a pena preencher:
- O que deve fazer, e o que nunca deve fazer.
- O que pode ler vs o que pode alterar ou excluir.
- Quais usuários e tipos de dados estão envolvidos (clientes, funcionários, faturas, arquivos).
- Quem depende disso no dia a dia (suporte, operações, financeiro).
- O que para de funcionar se você desligar por um dia.
Seja explícito sobre ler vs escrever. “Ler transações” é muito diferente de “emitir reembolsos” ou “criar cobranças”. “Ler arquivos” é diferente de “deletar arquivos” ou “compartilhar arquivos externamente”.
Exemplo: você conecta o Slack para postar novos pagamentos do Stripe em um canal. O mapa seguro diz que só precisa ler o evento de pagamento e postar uma mensagem. Se o app também pede para gerenciar canais ou ler todas as mensagens, essa discrepância merece atenção.
Permissões e scopes: perguntas a fazer sempre
A maioria das telas de “Conectar” parece amigável, mas a decisão real está na lista de scopes. Esses scopes decidem quão grande é o dano possível se algo der errado.
Leia scopes como um conjunto de chaves
Não aceite “necessário para a funcionalidade” como explicação. Pergunte os scopes exatos e o que cada um permite em linguagem simples. Um bom fornecedor consegue explicar a diferença entre “ler faturas”, “criar cobranças” e “gerenciar configurações da conta”.
Preste atenção especial a poderes de escrita e admin. “Escrever” frequentemente inclui criar e atualizar dados, e às vezes deletá‑los. “Admin” ou “gerenciar configurações” pode incluir alterar detalhes de payout, convidar usuários ou alterar controles de segurança.
Cinco perguntas que pegam a maioria dos pedidos arriscados:
- Quais scopes exatos estão sendo solicitados e o que cada um permite dentro do produto?
- É apenas leitura, ou pode escrever, deletar, reembolsar ou mudar configurações?
- Está pedindo acesso offline ou refresh tokens de longa duração? Se sim, por quê?
- Vai agir como um usuário específico (impersonação) ou como uma conta de serviço/bot separada?
- Qual é o conjunto mínimo de scopes para a única funcionalidade que precisamos hoje?
Exemplo: você quer um app do Slack só para postar alertas em um canal. Se ele pede permissão para ler todas as mensagens, gerenciar usuários ou instalar apps no workspace, isso está muito além do caso de uso.
Se um fornecedor não suporta o princípio do menor privilégio, pause. É mais fácil adicionar um scope depois do que desfazer uma integração poderosa demais após um incidente.
Tokens de acesso: onde vivem e como são protegidos
Tokens de acesso são chaves. Se alguém obtém um, geralmente pode agir como seu app. Uma pergunta prática cobre a maior parte do risco: depois de clicar em Conectar, onde o token vai parar?
Um padrão seguro é que os tokens morem no seu servidor, armazenados em um banco de dados ou secret manager, e nunca sejam enviados para o navegador ou app móvel. Se um token estiver armazenado no lado do cliente (local storage, embutido em uma build, no código do frontend), assuma que ele vai vazar mais cedo ou mais tarde.
Onde tokens não devem ficar
Uma falha comum é: um app salva um token no frontend, então um tracker de erros ou um log de console captura ele, e agora o token está disponível no dashboard de terceiros. Outro erro é um token acidentalmente comitado no histórico do Git.
Checagens práticas que previnem incidentes reais:
- Tokens são retornados ao navegador depois que o OAuth termina, mesmo uma vez?
- Tokens são criptografados em repouso (não apenas “em um banco de dados privado”)?
- Logs, eventos de analytics e relatórios de erro redigem tokens automaticamente?
- O acesso é limitado ao menor número de máquinas e pessoas que precisam dele?
- Backups e exports do banco estão protegidos da mesma forma que a produção?
Rotação e revogação sem drama
Tokens devem ser fáceis de rotacionar e revogar. Se seu único plano é “reconectar a integração”, você pode ficar preso durante um incidente.
Pergunte como a rotação funciona (ou refresh), se pode acontecer sem downtime, e o que “revogar” significa no seu setup. Dá para desabilitar uma conexão de usuário sem quebrar todo mundo? Dá para cortar o acesso rápido mantendo o resto do produto funcionando?
Se um token for roubado: o que acontece e o que fazer
Um token roubado normalmente significa que o invasor não precisa da sua senha. Ele pode agir como seu app usando as permissões que você aprovou.
O impacto depende do scope:
- Um token do Slack pode ler mensagens ou postar como um bot.
- Um token do Google pode ler arquivos do Drive ou acessar o Gmail.
- Um token do Stripe pode ler clientes, criar reembolsos ou alterar configurações de webhook.
Se o token veio de um scope amplo, presuma que o invasor pode fazer qualquer coisa que esse scope permita, e pode parecer “legítimo” nos logs de auditoria. Se for um refresh token, o risco é maior porque pode gerar novos access tokens por muito tempo.
Contenção deve ser rápida e chata:
- Revogue o token (ou desinstale o app) no dashboard do provedor.
- Rotacione segredos relacionados (chaves de API, segredos de assinatura de webhook, senhas de banco próximas ao token).
- Desabilite a integração no seu app até entender o raio de impacto.
- Restrinja quem pode reconectar o app (apenas admins, MFA nas contas do provedor).
- Adicione regras de monitoramento temporárias para as ações exatas que aquele token pode executar.
Para detectar uso indevido, procure ações fora do comportamento normal: reembolsos incomuns no Stripe, novos apps do Slack ou mudanças de permissão, downloads de arquivos em horários estranhos, ou chamadas de API de IPs ou regiões desconhecidas. Logs do provedor frequentemente mostram o que foi acessado e quando.
Preserve evidências antes de “limpar”. Exporte logs de auditoria e registre timestamps, IDs de token (se disponíveis), IDs de usuário e o primeiro evento suspeito. Isso facilita a investigação posterior.
O impacto para clientes depende do que o token podia ler ou alterar. Se tinha acesso a dados pessoais (e-mails, metadados de pagamento, arquivos), planeje notificações e remediação.
Quem pode conectar apps e aprovar acesso
A maioria dos incidentes com integrações não começa com um exploit sofisticado. Começa com a pessoa errada tendo poder para clicar em Conectar.
Trate conexões de app como adicionar um administrador às suas ferramentas de negócio. Decida quem pode instalar apps, quem pode conceder scopes e quem aprova mudanças.
Uma política simples que funciona para muitas startups:
- Limite instalações de apps e aprovações de scopes a 1–3 responsáveis.
- Exija aprovação antes de conceder novos scopes, mesmo se o mesmo app já estiver conectado.
- Aplique SSO e MFA para contas administrativas no Stripe, Google e Slack.
- Faça offboarding no mesmo dia em que alguém sair: remova papéis administrativos, revogue sessões, roteie segredos compartilhados.
- Revise integrações periodicamente e remova o que não é usado.
Aprovações importam porque scopes tendem a crescer com o tempo. Um app inofensivo do Slack pode depois pedir para ler mensagens. Um app do Google pode solicitar acesso à caixa de entrada. Se ninguém notar, você expande silenciosamente sua superfície de ataque.
Offboarding é onde times frequentemente escorregam. Se um funcionário conectou um app da própria conta, aquela integração pode continuar funcionando depois que ele sair, a menos que você revogue. Torne rotineiro revisar quem instalou cada integração e se está ligada a uma conta individual ou a uma conta administrativa compartilhada.
Exemplo: um líder de marketing conecta um app do Slack para agendar posts. Meses depois, o app pede scopes mais amplos para ler o histórico de canais. Se sua regra é “admins aprovam novos scopes”, o pedido é questionado antes que conversas sensíveis sejam expostas.
Webhooks e callbacks: a superfície de ataque escondida
Quando você conecta Stripe, Google ou Slack, a integração não é apenas “seu app chamando a API deles”. É também eles chamando você, muitas vezes várias vezes por dia, com webhooks ou callbacks. Se você tratar esses endpoints como URLs públicas normais, pode acabar aceitando eventos falsos, vazando dados ou disparando ações que não queria.
Certifique-se de que webhooks são reais
Pergunte como cada request de webhook é verificado. O mínimo aceitável é um check de assinatura usando o segredo de assinatura do provedor (não “veio da Stripe” ou “o IP parecia certo”). Confirme também onde esse segredo é armazenado e quem pode lê‑lo.
Uma boa pergunta de teste: se alguém copiar o segredo de assinatura ou adivinhar sua URL de endpoint, ele consegue criar um evento que pareça válido? Seu objetivo é “não”. A verificação de assinatura deve falhar e seu código deve rejeitar a requisição.
Replays, falhas e inundações
Entrega de webhook é instável por design. Provedores re‑tentam quando seu servidor está fora, e atacantes podem replayar requests antigos se você não se defender.
Verifique proteção contra replay (IDs de evento, timestamps, idempotência), retries seguras (seu handler pode rodar duas vezes sem cobrar em dobro), rate limiting e alertas claros quando entregas falham.
Também pergunte o que acontece se alguém chamar seu endpoint diretamente. Um erro comum é fazer o “trabalho real” antes da verificação. Verifique primeiro, então parseie, então aja.
Por fim, olhe o payload. Webhooks frequentemente incluem mais dados do que você precisa. Armazene só o necessário e evite logar payloads completos em produção (podem incluir e‑mails, nomes ou metadados inesperados).
Uma forma mais segura de conectar Stripe, Google ou Slack
Antes de clicar em Aprovar, leia a tela de permissões como se fosse um contrato. Traduza cada permissão em uma ação real. Se você não consegue explicar o que um scope permite, encare isso como um sinal de pare.
Reduza o que você concede antes de aprovar. Muitas integrações pedem acesso amplo por padrão, mas você frequentemente pode escolher um conjunto mais estreito.
Um fluxo simples de conexão que evita a maioria das surpresas:
- Teste primeiro (modo de testes do Stripe, uma conta Google separada, ou um workspace Slack separado).
- Aprove o menor conjunto de scopes que permita a funcionalidade principal.
- Confirme onde as credenciais serão armazenadas e quem pode lê‑las.
- Ative logs de auditoria e alertas antes de entrar em produção.
- Documente o kill switch: onde revogar acesso, rotacionar chaves e desabilitar a integração rapidamente.
Depois que funcionar em teste, repita os mesmos passos em produção. Uma falha comum é testar com uma conta pessoal do Google e depois conectar a conta da empresa com acesso mais amplo do que o pretendido.
Erros comuns que levam a incidentes reais
A maioria dos incidentes com integrações não são hacks avançados. Vieram de escolhas pequenas feitas na configuração, especialmente quando se está com pressa.
Um padrão comum é clicar em “Allow” sem checar o que está sendo concedido. Scopes padrão muitas vezes incluem mais do que você precisa, então um único token roubado vira um problema maior.
Outro erro frequente é colocar tokens onde não deveriam. Se um token do Stripe, Google ou Slack acabar no navegador, logs do cliente ou eventos de analytics, pode vazar via screenshots, tickets de suporte ou uma extensão de navegador comprometida.
Erros que aparecem repetidamente:
- Aceitar scopes amplos “porque pediu”, em vez de casar scopes com uma tarefa.
- Armazenar tokens no frontend ou em logs onde muitas ferramentas e pessoas podem ver.
- Usar uma única integração poderosa para tudo em vez de separar responsabilidades.
- Pular a verificação de assinatura de webhooks, permitindo que atacantes falsifiquem eventos.
- Esquecer de revogar acesso quando a ferramenta não é mais usada.
Exemplo: uma startup conecta o Slack para postar alertas de deploy e concede permissão para ler mensagens também. Mais tarde, o token é copiado de um log de depuração e usado para puxar conversas privadas.
Checklist rápido antes de clicar em Conectar
Trate conectar um app como dar uma chave a alguém. Esta pequena lista mantém a decisão ancorada no que o app pode fazer e no que acontece se esse acesso for abusado.
- Dono: nomeie a integração e designe um responsável.
- Menor privilégio: liste os scopes exatos e a razão em língua simples para cada um.
- Tratamento de tokens: confirme que tokens ficam no servidor, são criptografados em repouso e nunca aparecem em logs ou código do frontend.
- Visibilidade: ative logs de auditoria e alertas para instalações, mudanças de permissão e ações sensíveis.
- Plano de recuperação: escreva passos de revogar e rotacionar agora, não durante um incidente.
Exemplo: um colega conecta um app do Slack que pede permissão para ler todos os canais. Se esse token for roubado, um invasor pode puxar mensagens internas silenciosamente. A solução não é “revogar depois”. É reduzir scopes desde o início e saber como revogar rapidamente.
Cenário de exemplo e próximos passos
Um fundador quer alertas no Slack quando um novo pagamento do Stripe for bem‑sucedido. Ele conecta um app do Slack que pode postar mensagens, mais uma conexão Stripe que lê eventos.
O que é aprovado importa. No Slack, a versão segura geralmente é limitada a postar em um canal específico. A versão arriscada pede para ler canais, histórico de mensagens ou atuar como usuários. No Stripe, em geral você quer o menor acesso que funcione: receber notificações de eventos e ler detalhes básicos de pagamento, não criar reembolsos ou editar clientes.
Depois da aprovação, a integração armazena segredos em algum lugar (variáveis de ambiente no servidor, uma tabela de banco, ou configuração serverless). O modo de falha costuma ser chato: alguém imprime um token em logs, ou um token é copiado para um repositório compartilhado, e agora está acessível a mais gente e ferramentas do que o desejado.
Duas mudanças previnem a maior parte disso:
- Reduzir scopes e permissões de chaves ao mínimo.
- Armazenar tokens apenas no servidor, criptografados em repouso, nunca em logs ou no código do frontend.
Se você já lançou rápido, reveja os scopes concedidos, rotacione chaves e revogue tokens antigos, depois confirme se o app ainda funciona. Adicione monitoramento básico para novas instalações de apps, picos de uso de tokens e falhas na verificação de assinatura de webhooks.
Se você herdou uma base de código gerada por IA e não tem certeza do que está sendo solicitado ou onde credenciais são armazenadas, FixMyMess (fixmymess.ai) pode diagnosticar o código de integração, apontar scopes arriscados e segredos expostos, e reforçar o tratamento de webhooks antes de você depender disso em produção.
Perguntas Frequentes
Why is connecting an app a security decision, not just a setup step?
Porque você está concedendo acesso contínuo a dinheiro, dados ou fluxos de trabalho. Se esse acesso for abusado, um invasor muitas vezes pode causar danos reais sem jamais fazer login com senha ou autenticação multifator.
What’s the fastest way to evaluate whether an integration is too risky?
Comece com um objetivo em uma frase e depois liste os sistemas envolvidos e o que o app pode ler versus o que pode mudar ou deletar. Se as permissões não batem com esse objetivo, pare e reduza o escopo antes de aprovar.
What are “scopes,” and why should I care about them?
Permissões (scopes) são as ações e dados exatos que um app pode acessar, como “ler faturas” ou “emitir reembolsos”. Trate cada scope como uma chave que você está entregando e não aprove nada que você não consiga explicar em termos simples.
Which is more dangerous: read access or write/admin access?
Acesso de leitura limita danos a exposição, enquanto escrita/administrador pode alterar configurações, deletar dados, emitir reembolsos ou convidar usuários. Comece com leitura quando possível e só adicione escrita se você souber exatamente qual ação precisa disso.
What does “offline access” mean, and is it a red flag?
Acesso offline normalmente significa refresh tokens de longa duração, então o app pode funcionar sem você online. É conveniente, mas aumenta o risco se o token vazar — só permita quando realmente for necessário.
Where should access tokens be stored after I click “Connect”?
Um bom padrão é armazenar tokens no servidor, em um banco de dados ou secret manager, com criptografia em repouso e controle de acesso rígido. Tokens não devem ficar em código do frontend, local storage ou logs, porque esses lugares vazam facilmente.
If a token is stolen, what usually happens?
Pressuponha que o invasor pode fazer tudo o que os scopes permitirem, e isso pode parecer ‘legítimo’ nos logs. Revogue o token ou desinstale o app imediatamente, roteie segredos relacionados e desabilite a integração até entender o que foi acessado ou alterado.
How do I make token revocation and rotation less painful?
Você deve conseguir revogar rápido sem quebrar partes não relacionadas do produto. Documente o “kill switch” no dashboard do provedor e no seu app, e teste a rotação para não descobrir como fazer isso durante um incidente.
What’s the biggest webhook mistake teams make with Stripe, Google, or Slack?
Verifique cada webhook com a assinatura do provedor antes de processar qualquer coisa, e rejeite o que falhar. Proteja contra replays e retries para que um mesmo evento não cause ações duplicadas, e evite logar payloads completos em produção.
Who should be allowed to connect apps, and what if I don’t trust my codebase?
Limite quem pode instalar apps ou aprovar novos scopes a um pequeno grupo de responsáveis, e exija revisão administrativa quando as permissões mudarem. Se você herdou um código gerado por IA e não tem certeza do que foi concedido ou onde os tokens estão armazenados, FixMyMess pode auditar o código de integração e endurecê-lo antes de confiar em produção.