Securitate API și filtrare cerere
1) De ce aveți nevoie de ea
API - frontieră platformă externă și internă. Orice eroare în autentificarea, autorizarea, validarea sau normalizarea cererilor se transformă în exploatarea vulnerabilităților (BOLA/IDOR, injecție, SSRF, enumerare masivă, epuizarea resurselor). Scop: Crearea de apărare în profunzime de la perimetru la regulile de afaceri, cu SLO-uri măsurabile și controlul riscurilor.
2) Inventarul și clasificarea API
Directorul API: registrul tuturor serviciilor/punctelor finale, proprietarilor, versiunilor, tipurilor de clienți (web, mobil, parteneri), modul (public/partener/intern), PII/date financiare.
Criticality: High (tranzacții financiare/autorizare), Medium (citire profil), Low (directoare publice).
Suprafata de atac: REST, GraphQL, gRPC, WebSocket, carti web.
Status: prod/stadializare/experimental, politică de depreciere, token/durata de viață cheie.
Umbră/API abandonat: detectarea prin jurnalele de intrare, telemetria eBPF/Service Mesh, compararea cu un director.
3) Model de amenințare (scurt)
Identificare: token deturnare, sesiune comite, MitM, reluare.
Autorizatie: BOLA/IDOR, escaladare orizontala/verticala.
Intrare: injecții (SQL/NoSQL/LDAP), șablon/serializare, traversarea căii, antete.
Trafic: inundații DDoS/L7, cereri lente, retroaceri fantomă.
Integrări: cărți web nesigure, SSRF prin parametrii URL, descărcări de fișiere/scanare.
Logică: abuz de bonusuri, curse, inconsecvența idempotenței.
4) Standard de siguranță de bază (minim)
1. TLS 1. 2 + peste tot; HSTS; Cifrurile slabe sunt dezactivate.
2. Autentificare: OAuth2/OIDC pentru clienți, mTLS/sau HMAC - service-to-service.
3. Autorizație: PDP centralizat (RBAC/ABAC), Inspecție la nivel de obiect (BOLA).
4. Validare: schemă strictă (OpenAPI/JSON Schema/Protobuf), eșec cu câmpuri suplimentare.
5. Limite: rata/cote + explozie, per-client/per-IP/per-token.
6. Idempotence la operațiile de scriere, protecție împotriva repetițiilor/curselor.
7. Filtrarea WAF/gateway: normalizarea traseului/antetului, listele de negare, blocul anti-modele de sarcină utilă.
8. Secrete: KMS/Vault, rotație cheie/certificat, control al scurgerilor.
9. Observabilitate: urmărire, jurnale de audit de securitate (cine/ce/când/rezultat), alerte.
10. Proceduri: incidente playbook, cazuri de testare și pentests regulate/DAST.
5) Autentificare și management token
OAuth2/OIDC: jetoane de acces de scurtă durată, reîmprospătare strict conform OIDC; audiența/emitentul/exp sunt verificate pe poarta de acces.
JWT: RS256/ES256; set minim de scoici; „nbf/exp/aud” sunt necesare; interzicerea depozitării PII. Rotirea cheii prin JWKS.
DPoP/PoP: Legați token la cheia clientului pentru a reduce riscul de reluare/deturnare.
mTLS pentru sisteme interne și parteneri de încredere (calificare CN/SAN, CRL/OCSP).
HMAC (semnături): canonicalizare deterministă (metodă + cale + timestamp + nonce + body-hash); fereastră de timp valabilă (± 30 de ani).
Sesiuni de browser: SameSite = strict/lax, HttpOnly, Secure; Protecție CSRF (dublă depunere/stat jetoane).
Stocare client: pe mobil - stocare securizată (Keychain/Keystore), protecție depanare, certificate de fixare.
6) Autorizare (BOLA-primul)
Object-level: fiecare operațiune verifică dreptul la o anumită resursă (proprietar de resurse/domeniu/atribute).
RBAC/ABAC: roluri + atribute (țară, segment, limite de risc, nivel KYC)
Politici: negare în mod implicit; permiterea explicită; Testele de versionare a politicilor pentru cazurile negative.
Decizia cache: adaptive TTL + handicap în schimbarea rolurilor/segmentelor.
7) Filtrarea și normalizarea cererilor (pe gateway/WAF)
Normalizare: compresie de slashes repetate, prohibiție „../”, decodare o dată, spații de tundere/zero octeți.
Antete: lista permisă ('Gazdă', 'Tip conţinut', 'Acceptare', 'Autorizare', 'Dată', 'Cheie de identificare', anteturi de urme necesare).
Metode: "GET/HEAD' fără corp; „POST/PUT/PATCH” - cu tipul „cerere/json” sau strict permis.
Dimensiuni: max-body, max-headers, max-path; respingere timpurie 413/431.
Fișiere: validator MIME, antivirus/sandbox, interzicerea conținutului activ, reciclarea/igienizarea imaginilor.
URL-ul redirecționează/fetchi: blocul SSRF (refuză intervalele private/metadatele IP, schema numai 'https', domeniile permise-list).
Modele SQL/NoSQL: semnături de injecție prin intermediul seturilor de reguli WAF + parametrizarea serverului de interogări.
Exemplu Politica antet (Pseudo Format)
deny_headers: ["X-Forwarded-Proto","X-Original-URL","Proxy-Connection","Destination"]
require_headers: ["Authorization" (для protected), "Content-Type" (для write)]
strip_duplicates: true max_header_count: 32 max_header_size: 16KB
8) Limite, cote și protecție antibot
Limitarea ratei: cupă token/găleată cu scurgeri; niveluri - per IP, per cheie API, per utilizator, per org.
Cote: zilnic/lunar, separat pentru scriere/metode extinse.
Adaptivitate: strângere dinamică sub anomalii (explozie bruscă/umplutură acreditivă).
Lent-loris/lent-POST: timp de citire/menținere în viață, restricție de conexiune concomitentă.
Antibot: dispozitiv-amprentă digitală, semne comportamentale, dovada de lucru/captcha pentru risc crescut, lista de rețele tor/proxy.
Control IP: filtre geo/ASN, refuza listele de subrețele „murdare”, permit liste de parteneri/panouri de admin.
9) Validarea datelor și circuitelor de intrare
Eșec-închis: Tot ceea ce nu reușește schema este 400. Câmpuri suplimentare - respingeți.
Tipuri/intervale: numere, date (UTC/ISO-8601), valori ale enumului, lungimi ale liniei, regexuri.
JSON-calitate: max-cuibărit, interzicerea matrice mari/chei, ordine canonică (opțional).
Validarea afacerii: idempotență în conformitate cu „Cheie de idempotență”; norme antifraudă (limite de frecvență de funcționare, limite de cantitate).
GraphQL: limite de adâncime/complexitate, interogări permise, autorizație pe câmp.
gRPC: scheme stricte Protobuf, câmpuri obligatorii, limitele dimensiunii mesajului.
10) Webhooks și apeluri externe
Semnături: HMAC cu marcaj temporal/nonce; verificare înainte de prelucrare; fereastră +/- 5 min.
Livrare: Retrai cu pauză exponențială și jitter; max-încercări; Deduplicarea ID-ului evenimentului
Furnizor IP permite lista subdomeniu separat/cale; stivă de găzduire minimă.
Răspunsuri: 2xx numai după o înregistrare internă reușită; în caz contrar 4xx/5xx cu cod clar.
Controlul SSRF de ieșire: când URL-ul de apel - permiteți lista, refuzați adresele private.
11) Criptare și gestionare secretă
În canal: TLS 1. 2+/1. 3, pinning, strictă politica de cifru.
Singur: criptare DB/stocare obiect, chei separate pentru PII/date financiare.
KMS/Vault: stocarea centralizată a secretelor, TTL scurt, rotație automată.
Chei și certificate: separate pentru medii; auditul problemelor; interzicerea producției în bușteni.
Token-introspecție: liste de revocare offline, short 'exp'.
12) Observabilitate, audit și răspuns
Jurnale de securitate: încercări/succese de autentificare, eșecuri de autorizare, evenimente cu rate limită, modificări de rol/limită.
Urmărire: corelație-ID end-to-end; urmărirea apelurilor externe.
Valori: RPS, latență P95/P99, eroare-rate de cod, cota de 401/403/429, limite de rata de succes, anomalii.
Alerte: piroane 401/403/429, creștere 5xx, conflicte frecvente de idempotență, abateri ascuțite ale graficului de complexitate QL.
Playbook-uri: blocarea cheilor/jetoanelor, rularea rapidă a regulilor, încălzirea listei de refuzuri, notificarea proprietarilor de servicii.
Criminalistică: păstrarea sarcinii utile controversate (cu editare PII sigură), reluarea pe un suport izolat.
13) Erori și răspunsuri la client
Format de eroare uniformă (cod, mesaj, trace-id, categorie).
Nu există scurgeri: nu divulgați SQL, nume de tabele, idies interne; 403 în loc de „de ce nu”.
Coduri: 400 (validare), 401 (fără autentificare), 403 (fără drepturi), 404 (existența măștii), 405/406, 413/429, 500/503.
Retry-Hints: для 429 - 'Retry-After'; pentru idempotență - sfaturi privind repetarea cu aceeași cheie.
14) Modele arhitecturale
Zero-Trust: mTLS, autorizare explicită între toate serviciile, privilegii minime.
API gateway + WAF + mesh de serviciu: separarea taxelor - perimetru, politici L7, autentificare internă.
Canare/Albastru-Verde: Introduceți noi reguli de filtrare în etape cu supraveghere.
Eșec-închis: pentru scrierea critică, este mai bine să refuzați în siguranță decât să permiteți funcționarea incorectă.
Backpressure: cozi/tampoane, întrerupător de circuit, timeout-uri/bugete.
15) Exemple de reguli practice (pseudo-config)
15. 1 Limitarea căilor și metodelor
/api/v1/payments:
allow_methods: [POST, GET]
auth: oauth2_required body:
content_type: application/json max_size: 256KB
15. 2 Idempotența
require_header: Idempotency-Key (UUIDv4)
store: redis:ttl=24h on_duplicate: return_previous_result
15. 3 Semnătura cererii (HMAC)
signature:
scheme: "HMAC-SHA256"
required_headers: ["X-Signature","X-Timestamp","X-Nonce"]
allowed_drift: 300s string_to_sign: METHOD + "\n" + PATH + "\n" + SHA256(body) + "\n" + X-Timestamp + "\n" + X-Nonce
15. 4 protecție SSRF
outbound_http:
allowlist_domains: ["kyc. partner. com","psp. example. net"]
block_private_ip: true require_https: true
15. Limita 5 GraphQL
graphql:
max_depth: 8 max_complexity: 500 allowlisted_operations_only: true
16) Specificul iGaming/Finanțe
Limitele segmentului: în funcție de profilul CCM/țară/risc.
Ferestre de timp: reguli de frecvență de depunere/retragere, „răcire” între tranzacții.
Bonus anti-abuz: blochează consistent contul/dispozitivul/IP/instrument de plată.
Auditul cerințelor de reglementare: stocarea jurnalelor de acțiuni și decizii (KYC/AML), perioadele de păstrare, jurnalele neschimbătoare.
17) Lista de verificare Prod Ready
- Directorul complet API și harta fluxului de date (PII/financiare etichetate).
- Scheme OpenAPI/Protobuf, teste de validare și contracte în CI.
- mTLS/HMAC/OAuth2 configurat; jetoane TTL scurte; rotație cheie.
- Testele BOLA și cazurile de autorizare negative; PDP centralizat.
- Limite/cote/anti-bot, protecție împotriva lent-loris; Filtre IP.
- Norme de normalizare WAF/gateway, semnături anti-injectare.
- Idempotența operațiunilor de scriere; protecție împotriva reluării.
- Semnături webhook și lista de permise; criterii finale izolate.
- Secretele în KMS/Vault; depozite criptate; alerte la anomalii.
- Tablouri de bord, alerte, jurnale de audit; a lucrat playbook incidente.
- Regular pentest/DAST/SAST, piste de vulnerabilitate și patch-uri de descărcare.
18) Antipattern (ceea ce nu este posibil)
Trust 'X-Forwarded-' fără TLS rigide pe perimetrul său.
Acceptați schemele JSON arbitrare "Content-Type" și "soft'.
JWT-uri cu durată lungă de viață fără rechemare/rotație.
Se amestecă rolurile și regulile de afaceri în cod fără politici centralizate.
Jurnale cu secrete/PII; detaliate 500-mesaj spre exterior.
Puncte finale „temporare” deschise fără limite și autorizație.
19) Versioning și Deprekate
Versiuni în traseu/antet; politica de sprijin (ex. N-2).
Anunțuri: termene limită pentru depreciere, monitorizarea utilizării versiunilor vechi, oprirea controlată.
Compatibilitate: contracte client/partener și matrice de testare.
20) Testarea siguranței
Teste contractuale de scheme/politici, intrări fuzzing, auth negativ.
Profile de performanță cu limite/cote, test de protecție (trafic haos).
Red-team/bug-bounty: scripturi BOLA, SSRF, semnături/reluări, complexitate GraphQL.
TL; DR
1. Director API + scheme stricte.
2. OAuth2/OIDC pentru clienti, mTLS/HMAC interior.
3. Perimetrul BOLA per resursă (ABAC/RBAC).
4. Filtrare: normalizare trasee/antete, limite, reguli WAF.
5. Idempotence, semnături, reluare/protecție SSRF.
6. KMS/Vault și rotație secretă.
7. Observabilitate, alerte, cărţi de joacă.