28 pontos de verificação que aplicamos em auditorias de APIs financeiras. Autenticação, autorização, rate limiting, input validation e proteção contra fraudes.
Disley Souza
8 de maio de 2026
Este é o checklist interno que usamos em auditorias de APIs financeiras. Não é teórico — cada item foi adicionado depois de encontrar a vulnerabilidade correspondente em produção.
IDOR (Insecure Direct Object Reference) é a vulnerabilidade #1 em APIs financeiras. Sempre valide que o usuário autenticado é dono do recurso solicitado — não apenas que está autenticado.
// Exemplo com Upstash Redis + sliding window
import { Ratelimit } from "@upstash/ratelimit";
import { Redis } from "@upstash/redis";
const ratelimit = new Ratelimit({
redis: Redis.fromEnv(),
limiter: Ratelimit.slidingWindow(5, "1 m"), // 5 req/min
prefix: "payment_api",
});
export async function POST(request: Request) {
const identifier = request.headers.get("x-forwarded-for") ?? "anonymous";
const { success, limit, reset, remaining } = await ratelimit.limit(identifier);
if (!success) {
return Response.json(
{ error: "Too many requests" },
{
status: 429,
headers: { "Retry-After": String(Math.ceil((reset - Date.now()) / 1000)) }
}
);
}
// lógica de negócio
}import { z } from "zod";
const PaymentSchema = z.object({
amount: z.number().int().positive().max(100_000_00), // centavos, máx R$100k
recipient: z.string().regex(/^[1-9A-HJ-NP-Za-km-z]{32,44}$/), // endereço Solana
description: z.string().max(200).optional(),
}).strict(); // rejeita campos extras
export async function POST(request: Request) {
const body = await request.json();
const result = PaymentSchema.safeParse(body);
if (!result.success) {
return Response.json({ error: result.error.format() }, { status: 400 });
}
// result.data é type-safe aqui
}Use o Mozilla Observatory (observatory.mozilla.org) para validar seus headers de segurança. Score A+ é o mínimo aceitável para APIs financeiras.
Próximo passo
Auditoria de segurança, arquitetura de sistemas blockchain, integração Solana — trabalhamos com equipes que não aceitam o suficiente.