GH GambleHub

Protezione API e token

Breve riepilogo

La sicurezza dell'API è un insieme di meccanismi di autenticazione, autorizzazione, protezione crittografica, anti-abuso e osservabilità che garantiscono che la richiesta soddisfi l'obiettivo previsto per la risorsa prevista nel contesto previsto. L'artefatto chiave è un token (o una firma di query) che dimostra il diritto di chiamata. La buona architettura si basa su token a breve vita, scatti chiari, privilegi minimi, protezione contro le ripetizioni, rate limiting e procedure operative (rotazioni, verifiche, incidenti).

Modelli di autenticazione API quando e cosa scegliere

Chiave API (segreto statico)

Semplice per integrazioni B2B e script a basso rischio. Non contiene un contesto, richiede l'archiviazione sul lato del servizio.
Usa solo IP/ASN allow-list, quote fisse, TTL corto e rotazioni.

OAuth 2. 1 / OIDC

Standard per le integrazioni utente e partner: access token + refresh token (rotazione) + scoop.
Client pubblici - con PKCE; client confidential - con un segreto client/mTLS.

Client Credentials (m2m)

Mashina→mashina: access token per servizi rigorosamente definiti e udienze, spesso senza rifresh (ricezione).

mTLS (TLS reciproco)

Aggancia l'identità al canale. Ideale per le integrazioni a alto rischio o di pagamento (PoP su TLS).
Può essere combinato con OAuth (token solo per client mTLS).

Firme query (HMAC/EdDSA)

Quando hai bisogno di una firma indipendente dal trasporto, il titolo della firma, timestamp e nonce. Comodo per webhoop e controllo off-line.

Formati e tipi di token

JWT (JWS firmati)

Autosufficienti, controllati localmente; sono obbligatori «iss», «sub», «aud», «exp», «iat», «jti», «scope».
Rischio - La recensione è più complessa: usa TTL brevi (5-15 min) + elenco di «jti» richiamati per gli incidenti.

JWE (JWT cifrati)

Se il payload è sensibile (PII). Costi superiori alla complessità e spese generali.

Reference tokens

Identificatori opachi, convalidati tramite introspection da Authorization Server - più facile da richiamare/centralizzare.

PoP/DPoP

Agganciare un token a una chiave client o a una sessione TLS riduce il valore del token rubato.

Contenuto token minimo sufficiente

Etichette consigliate (JWT):
  • «Iss», «sub», «aud», «exp», «iat», «nbf» (opzionale), «jti».
  • scope '/' pertissions '(minimo necessario),' tenant '(per i multi-generici),' device _ compliant '/' amr '(metodo di autenticazione),' ip '/' asn '(se applicabile a un criterio).
Regole:
  • TTL brevi per access (5-15 min), refresh - 12-48 h (rotazione rotante).
  • Il pubblico ('aud') è una risorsa molto specifica, altrimenti il token è riutilizzabile.
  • Scoop - Azione e oggetto (ad esempio, 'payments: withdraw. read`).
  • Dimensioni: 2-4 KB per intestazioni e proxy; Altrimenti potrebbero esserci problemi con i gateway.

Autorizzazioni e criteri

RBAC + ABAC: ruolo + contesto (organizzazione, geo, rischio, stato del dispositivo).
PEP/PDP - Verifica del token e decisione su API-gateway/proxy (Invoy/OPA) prima dell'applicazione.
Regole dichiarative: conservare in Git, passare in policy-test in CI.

Esempio Rego (semplificato):
rego package policy. withdraw

default allow = false

allow {
input. token. aud == "wallet-api"
input. token. scope[_] == "payments:withdraw. create"
input. device. compliant == true input. risk. score < 70
}

Firma query (HMAC) e anti-replay

Quando si desidera: webhoop, integrazione senza OAuth, doppia verifica delle operazioni critiche.

Schema intestazione (esempio):

X-Client-Id: <id>
X-Timestamp: 2025-11-05T13:20:10Z
X-Nonce: 4d1f...a2
X-Signature: base64(HMAC_SHA256(secret, method + "\n" + path + "\n" + sha256(body) + "\n" + timestamp + "\n" + nonce))
Regole:
  • Rifiuta richieste temporali> © 300 secondi
  • Noncè conserva 5-15 minuti e non riceve ripetizioni (cache replay).
  • Firma la visualizzazione canonizzata della query (metodo, percorso, query, hash del corpo).

Idoneità e protezione transazionale

Idempotency-Key per le operazioni di prelievo/pagamento/creazione: la stessa chiave ha lo stesso effetto.
La durata della chiave è la durata del timeout aziendale (di solito 24-72 ore).
La logica sul lato server è di confrontare i parametri di query con quelli precedentemente fissati per questa chiave.

Browser e client mobili

PKCE è obbligatorio (client pubblici).
Refresh-token nel browser - evitare; se necessario - ROTATION + risposta alla ripetizione (dettaglio replay).
Storage di sessione> storage locale meglio: backend for frontend (BFF) è responsabile dei token.
SameSite, Secure, HttpOnly для cookie; KORS - allow-lists espliciti, intestazioni e metodi preferlight-cache sicuro.

m2m e integrazioni ad alto rischio

mTLS + OAuth2 Client Credentials con scorie e «aud».
IP/ASN allow-list sul gateway.
PoP/DPoP o firma HMAC sopra TLS per operazioni critiche.
Quote e rate limits per organizzazione/client/chiave.

Rotazioni, richiami e risposta agli incidenti

Rotazione dei segreti e delle chiavi di firma (JWKS) - Pianificato + forzato in caso di incidente.
Dual-key rollout: pubblica la nuova coppia chiave in anticipo (kid2), firma i token per lei, tieni la vecchia (kid1) per la convalida fino all'esaurimento della TTL.
Refresh-rotation: ogni scambio di refresh → un nuovo token, il vecchio diventa immediatamente nullo; La ripetizione è un segnale di compromissione.
Revocation: per JWT - elenchi «jti» ritirati per un breve periodo di tempo; per reference token - blocco immediato su AS.
Script break-glass: crediti statici temporanei con diritti minimi e TTL rigidi, fissati nel registro.

Rate limiting, bot-protezione e anti-sovrapprezzo

Limiti a tre livelli: per-key/per-IP/per-organizzazione.
Burst + sustained - token-serbatoio/finestra di scorrimento.
Controlli complessi: device fingerprint, segnali comportamentali, anomalie geo/ASN, CAPTCHA solo per UI.
Lockout/slowdown in caso di sovrapposizione della firma/NMAS e tentativi di autenticazione non completati.

Loging, metriche e SLO

Set minimo di loghi: 'sollest _ id', 'client _ id', 'sub', 'aud', 'scope', 'decision',' reason ',' jti ',' ip ',' asn ',' latency ',' quota'state '.

Metriche:
  • Successo di validazione dei token (%), p95 tempo di verifica.
  • Frequenza di deviazioni replay duplicate da Idempotency-Key.
  • La percentuale di richieste di PoP/DPoP/mTLS.
  • Errori «aud/scope» scaduti «exp», spostamenti di tempo (NTP).
SLO (esempi):
  • Disponibilità Auth/AS 99. 95 %/mes; p95 introspection ≤ 50 мс.
  • Zero token con TTL <60 c in vendita (metrica di sicurezza).
  • Meno di 0. 1% di errori al giorno (qualità delle integrazioni).

Esempi di configurazione

Avvoy - Verifica JWT e udienza

yaml http_filters:
- name: envoy. filters. http. jwt_authn typed_config:
providers:
as:
issuer: https://auth. example. com/
audiences: ["wallet-api"]
remote_jwks:
http_uri:
uri: https://auth. example. com/.well-known/jwks. json cluster: jwks_cluster cache_duration: 600s rules:
- match: { prefix: "/v1/withdraw" }
requires:
provider_and_audiences:
provider_name: as audiences: ["wallet-api"]

NGINX: mTLS к backend

nginx proxy_ssl_server_name on;
proxy_ssl_name wallet. internal;
proxy_ssl_certificate   /etc/nginx/mtls/client. crt;
proxy_ssl_certificate_key /etc/nginx/mtls/client. key;
proxy_ssl_trusted_certificate /etc/nginx/mtls/ca. crt;
proxy_ssl_verify on;
proxy_ssl_verify_depth 2;

Esempio di intestazione firma (webhoop)


X-Signature: t=1730803210,n=ac12...,s=base64(HMAC_SHA256(secret, "POST\n/webhook\nsha256(body)\n1730803210\nac12..."))

Il server rifiuta se «t» è superiore a 300 c, «n» si è già incontrato o «s» non batte.

Protezione dei dati e privacy

Ridurre al minimo i marchi (in particolare il PII) e la durata della vita.
Cifrare i marchi sensibili (JWE) per le integrazioni di terze parti.
Mask/DLP nei fogli: non logifichi i corpi con PAN/PII, i token sono solo «kid »/flag, non è il segreto stesso.

Errori tipici

Token di accesso lungo e rifresh «eterni».
L'assenza di «aud »/« scope» è multifunzione.
Firma webhoop senza «timestamp »/« nonce».
Convalida JWT solo nell'applicazione e non nel gateway (PEP).
Nessuna rotazione e dual-key rollout.
I metodi CORS e i metodi non sicuri autorizzati non sono controllati dall'intestazione.
Deposito di token in localStorage senza BFF.

Road map di implementazione

1. Inventario API e classificazione (pubblico/partner/interni, sensibilità).
2. Seleziona il modello AuthN OAuth2/OIDC per quelli personalizzati, mTLS+Client Credentials/HMAC per m2m.
3. Token: TTL brevi, rigido'aud ', rigido', per operazioni critiche.
4. PEP sul gateway: convalida JWT, firma e rate limits prima dell'applicazione.
5. Anti-replay e idampotenza: timestamp/nonce/Idempotency-Key.
6. Rotazioni e JWKS: dual-key, automazione e alerting.
7. Osservabilità: metriche/SLO, registri di accesso, segnali UEBA.
8. Esercitazioni: scollegamento della chiave di firma, fuga di rifresh, sovraccarico delle quote.

Particolare per iGaming/Fintech

Pagamenti/pagamenti: solo mTLS + PoP/HMAC, scoop rigorosi ('withdraw. create '), idempotency è obbligatorio.
Partner (PSP/provider di contenuti): per-partner chiavi/certificati, IP/ASN allow-list, quote separate e dashboard.
GDPR/PCI DSS: riduzione dei marchi, proibizione del PII nei token di terze parti, logificazione dell'accesso alle risorse sensibili, access review regolari.
Anti-abuse: limiti comportamentali, geo-controllo, protezione contro il bonus abuse a livello API.

FAQ

JWT o reference token?
Prestazioni e autonomia JWT reference - recensione centralizzata e facilità di risposta incidente. Spesso ibrido - esterno - JWT, interno - reference.

C'è bisogno di JWE?
Solo se payload contiene PII/segreti. Altrimenti, JWS con i marchi minimi.

È possibile vivere su chiavi API?
Sì, ma solo con TTL brevi, quote rigorose, IP-allow-list e firma richieste. Per gli utenti - preferibilmente OAuth/OIDC.

È obbligatorio?
Non sempre. Ma per le transazioni high-risk (pagamenti, conclusioni) è estremamente desiderabile.

Totale

La sicurezza affidabile dell'API si basa su token a breve termine, scatti di precisione e pubblico, canali protetti (TLS/mTLS), firme di richieste e protezione rigorosa anti-replay, con limiti e osservabilità. Aggiungi rotazioni automatizzate, dual-key rollout e controllo politico sui gateway - e la tua API diventa resistente a fuoriuscite, ripetute e abusive, mantenendo al contempo prestazioni e gestibilità elevate.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.