Guia de integração · 2026
Segurança de API de cassino: assinaturas, allowlists e idempotência explicadas
Uma API de cassino move dinheiro a cada giro. Aqui, segurança tem menos a ver com firewalls e mais com três perguntas: esta requisição é genuína, ela é inofensiva se chegar duas vezes e cada alteração de saldo pode ser rastreada depois? São estes os controles a combinar com o seu provedor antes da primeira aposta real.
A versão resumida
- Assine toda requisição nos dois sentidos e rejeite tudo o que falhar na verificação.
- Use allowlist de IPs de servidor dos dois lados; endpoints de carteira nunca ficam abertos à internet.
- Torne toda chamada de carteira idempotente pelo id da transação.
- Mantenha os tokens de sessão de curta duração e vinculados a um único jogador e a um único jogo.
- Registre em log cada requisição e resposta; você vai precisar deles em uma disputa.
O que uma requisição assinada comprova
Uma assinatura é um hash do corpo da requisição e de um timestamp, feito com um segredo que só você e o provedor possuem. O lado receptor o recalcula; se os dois valores diferem, a requisição foi forjada ou alterada e é rejeitada. O timestamp também importa: aceite requisições apenas dentro de uma janela curta, e uma requisição capturada não poderá ser repetida uma hora depois.
Na IGP, toda chamada pela API de cassino leva um hash para que o servidor possa provar que veio de você. Peça a mesma proteção nos callbacks que chegam à sua carteira e teste os dois sentidos, não só o que você envia.
Allowlist de IPs
O endpoint da sua carteira é onde o dinheiro se move, então deve responder apenas aos servidores do provedor. Combine IPs de saída fixos dos dois lados, mantenha listas separadas para staging e produção e trate qualquer alteração na lista como uma solicitação de mudança, não como um ajuste rápido.
Idempotência: o controle que protege os saldos
Redes sofrem timeout. Quando um provedor não recebe a sua resposta a tempo, ele envia o mesmo débito ou crédito de novo. Se a sua carteira trata a nova tentativa como uma transação nova, o jogador paga duas vezes ou é pago duas vezes.
A correção é simples e inegociável: armazene todo id de transação e, quando um chegar de novo, devolva a resposta original sem mover o saldo. Rollbacks devem referenciar a transação que revertem. Nosso checklist de integração da API de cassino traz os testes para os três casos.
Tokens de sessão e abertura de jogo
Uma sessão de jogo começa com um token que a sua plataforma emite na abertura. Vincule-o a um jogador, um jogo e uma moeda, dê a ele vida curta e verifique-o na primeira chamada de carteira. Não coloque dados pessoais nas URLs de abertura; um id de jogador e um token bastam.
| Controle | O que impede | Quem é responsável |
|---|---|---|
| Assinatura da requisição | Chamadas forjadas ou alteradas | Operador e provedor |
| Janela de timestamp | Requisições repetidas | Operador e provedor |
| Allowlist de IPs | Chamadas de servidores desconhecidos | Operador e provedor |
| Ids de transação idempotentes | Débitos e créditos duplicados em novas tentativas | Carteira do operador |
| Tokens de sessão de vida curta | Sessões de jogo sequestradas ou reutilizadas | Plataforma do operador |
| TLS em toda chamada | Interceptação em trânsito | Operador e provedor |
| Logs de auditoria | Disputas que você não consegue provar para nenhum dos lados | Operador e provedor |
Antes de entrar em operação
- Envie uma requisição com assinatura errada e timestamp expirado; as duas devem ser rejeitadas.
- Chame a carteira de um IP que não está na lista; deve ser recusada.
- Envie o mesmo débito duas vezes e o mesmo crédito duas vezes; o saldo deve se mover uma vez em cada caso.
- Abra um jogo com um token expirado; ele não deve abrir uma sessão com dinheiro real.
- Escolha uma rodada aleatória de ontem e rastreie-a de ponta a ponta nos seus logs.
Perguntas frequentes
Uma integração assinada, mais de 150 provedores
Requisições assinadas, uma carteira e um fluxo de transações normalizado para mais de 18.000 jogos, com um sandbox para testar cada controle acima.

