O Seu SaaS Está Perdendo Dinheiro

A maioria dos desenvolvedores lança seu SaaS e segue em frente. Eles tratam a segurança como uma tarefa para depois. Eles esperam que usuários reais ou dinheiro real cheguem.

Perdas financeiras reais geralmente vêm de erros simples. Não são hacks complexos. São erros de lógica no seu código.

Aqui estão quatro formas comuns de perder dinheiro:

  1. Condições de Corrida (Race Conditions) em Sistemas de Crédito Você lê o saldo de um usuário, verifica-o e depois grava o novo saldo. Se um usuário enviar duas requisições ao mesmo tempo, ambas podem passar na verificação antes que a primeira atualize o banco de dados. Você entrega dois serviços pelo preço de um.

A solução: Use operações atômicas de banco de dados. Em vez de ler e depois gravar, use um único comando para atualizar o saldo apenas se o usuário tiver créditos suficientes.

  1. Confiar na Entrada do Cliente para Identidade Você pega o endereço de e-mail do corpo da requisição durante o checkout. Um usuário autenticado pode alterar esse e-mail para o endereço de outra pessoa. Isso permite que eles criem sessões de faturamento para contas erradas ou sondem seu sistema.

A solução: Nunca confie na identidade vinda do corpo da requisição. Extraia o e-mail do token de sessão verificado no seu servidor.

  1. Lógica de Faturamento Anual Quebrada Muitos desenvolvedores resetam os créditos dos usuários ouvindo eventos de pagamento do Stripe. Isso funciona para planos mensais. Falha para planos anuais. O Stripe envia um evento por ano. Seus usuários recebem créditos no primeiro dia e nada nos próximos onze meses.

A solução: Desacople o reset de créditos dos eventos de faturamento. Use um cron job diário para verificar quais usuários precisam de um reset com base em uma data de reset.

  1. Armazenamento Inseguro de Tokens Você armazena tokens de redefinição de senha no localStorage. Qualquer script em sua página pode acessar o localStorage. Isso inclui extensões de navegador e análises de terceiros.

A solução: Use seu SDK de autenticação para lidar com tokens de recuperação. Deixe a biblioteca processar o token automaticamente sem armazená-lo no local storage.

O problema é sempre o mesmo: você confia no cliente. Você confia que as requisições chegam uma de cada vez. Você confia que os eventos de faturamento cobrem todos os casos.

Corrigir esses problemas leva menos de um dia. Audite seu código antes de perder dinheiro.

Fonte: https://dev.to/manolito99/your-saas-is-probably-leaking-money-right-now-and-you-dont-know-it-1g38