API անվտանգությունը և ֆիլտրային հարցումները
1) Ինչո՞ ւ է դա անհրաժեշտ
API-ը պլատֆորմի արտաքին և ներքին սահմանն է։ Ցանկացած սխալ, հեղինակային իրավունքի, վավերացման կամ հարցումների նորմալացման մեջ վերածվում է խոցելիության (BOLA/IDOR, inject, SSRF, զանգվածային փոխանցումներ, ռեսուրս սպառումը)։ Նպատակը 'ստեղծել բազմաբնույթ պաշտպանություն (wwww.ense-in-depth) պարագծից մինչև բիզնես կանոնները, չափված SLO-ով և ռիսկերի վերահսկմամբ։
2) Բուլգարիզացիան և API դասակարգումը
API-ի կատալոգը 'բոլոր ծառայությունների/էնդպոինտների, սեփականատերերի, տարբերակների, հաճախորդների տեսակների (web, mobile, գործընկերներ), ռեժիմը (հանրային/ավստրիական/ներքին), PII/ֆինլանդական։
Քննադատությունը ՝ High (ֆինանսական վիրահատություններ/հեղինակային), Novich (կարդալը), Low (հասարակական գրողներ)։
Հարձակման մակերեսը ՝ REST, GraphQL, gRPC, Webhooks։
Կարգավիճակը ՝ 108/staging/experimental, դեպրեսիտի քաղաքականությունը, տոկենների կյանքի ժամանակահատվածը/108։
Shadow/լքված API-ը 'հայտնաբերումը լոգարանների ինգրեսով, eBPF/Windows Mesh հեռուստացույցի միջոցով, համեմատությունը ածխածնի հետ։
3) Սպառնալիքների մոդել (հակիրճ)
Նույնականացում 'հոսանքների անկյունը, նստաշրջանի ամրագրումը, MitM, replay։
Հեղինակի 'BOLA/IDOR, հորիզոնական/ուղղահայաց էսկալացիա։
Մուտքագրումը (SQL/Windows SQL/LDAP), մոդելային/սերիլիզացիոն, path traversal, վերնագրեր։
Տե՛ ս ՝ DDoS/L7-ֆլուդները, դանդաղ հարցումները, ֆանտոմային ռետրերը։
Մոսկվա 'անվտանգ webhooks, SSRF-ը URL պարամետրերի միջոցով, ֆայլերի/սկանների բեռնումը։
Տրամաբանություն 'բոնուսների չարաշահում, մրցավազք, կուռքերի անհամապատասխանություն։
4) Անվտանգության հիմնական ապահովումը (նվազագույն)
1. TLS 1. 2 + ամենուր; HSTS; անջատված են թույլ ծածկագրերը։
2. Վավերացում ՝ OAuth2/OIDC հաճախորդների համար, mTSA/կամ HMAC-ը-k ծառայություն է։
3. Հեղինակի 'կենտրոնացված PDP (RBAC/ABAC), օբյեկտի մակարդակում ստուգում (BOLA)։
4. Վալիդացիան 'խիստ սխեմա (OpenAPI/JSON Schema/Eurobuf), ավելորդ դաշտերում հրաժարվելը։
5. Limits: rate/www.tas + burst, նախկին հաճախորդ/www.ru-IP/2019-tocen։
6. Idempotention write վիրահատությունների վրա, պաշտպանություն խոհարարներից/մրցույթներից։
7. WAF/gatway ֆիլտրում 'ճանապարհների/վերնագրերի նորմալացում, deny-թերթիկներ, payload-anti-patrones բլոկը։
8. Գաղտնիքները ՝ KFC/Vance, կոդերի/հավաստագրերի լուծումը, արտահոսքի վերահսկումը։
9. Դիտարկումը 'ուղեբեռը, աուդիտի լոգները (ով/ինչ/երբ/արդյունքը), ալերտները։
10. Ընթացակարգերը ՝ playbook 2019, թեստային և պենտեստա/DTS։
5) Վավերացումը և հոսանքների կառավարումը
OAuth2/OIDC: Կարճ գոյատևող թոկեններ, refresh խստորեն OIDC-ով։ audience/issuer/exp ստուգվում են խաղացողի վրա։
JWT: RS256/ES256; Կլայմերի նվազագույն հավաքածուն '«nbf/exp/aud» պարտադիր է։ արգելք PII-ի պահպանման համար։ Միգրացիան կատարվում է JWKS-ի միջոցով։
DPoP/PoP 'կապակցումը պտտվում է հաճախորդի բանալին, որպեսզի նվազեցնի replay/ugons ռիսկը։
MTIM ներքին համակարգերի և վստահված գործընկերների համար (CN/SAN, CRL/OCERT)։
HMAC (ստորագրություններ) 'դետերմինացված կանոնականացում (մեթոդ + ճանապարհ + timestamp + nonce + body-hash); թույլատրելի ժամանակի պատուհանը (300s)։
Զննարկչի նիստերը ՝ SoftSite = strict/lax, You Only, Secure; պաշտպանություն CSRF (double dit/state-tocens)։
Հաճախորդների պահեստ 'լվացքի վրա' անվտանգ հյուրանոցներ (Keychain/Keystore), պաշտպանություն դեբագից, հավաստագրերի պիննինգ։
6) Հեղինակային իրավունքը (BOLA-first)
Object-level: յուրաքանչյուր վիրահատություն ստուգում է հատուկ ռեսուրսի իրավունքը (resource owner/scope/ատրիբուտներ)։
RBAC/ABAC 'դերերը + ատրիբուտներ (երկիրը, հատվածը, ռիսկի սահմանները, KYC մակարդակը)։
Քաղաքական գործիչները ՝ deny-by-210; ակնհայտ allow; քաղաքական գործչի տարբերակումը. փորձարկումներ բացասական դեպքերի վրա։
Լուծումների քեշը 'հարմարվողական TTL + հաշմանդամություն, երբ դերերը/հատվածները փոխվում են։
7) Ֆիլտրացումը և հարցումների նորմալացումը (խաղախաղի/WAF)
Նորմալացում 'կրկնվող արցունքների սեղմում, արգելք «../», մեկ անգամ անջատել, կտրել ածխաջրածինները/զրո բայթերը։
Վերնագրեր ՝ allow-list («Host», «Content-Type», «Accept», «Authorization», «Date», «Idempotency-Key», անհրաժեշտ տրace վերնագրեր)։
Մեթոդներ ՝ «GET/HEAD» առանց մարմնի; «POST/PUT/PATCH» - տեսակի հետ, որը խիստ թույլատրված է։
Չափերը ՝ max-body, max-headers, max-path; early-reject 413/431.
Ֆայլերը ՝ MIME-վալիդատոր, հակավիրուսային/սանդբոքս, ակտիվ բովանդակության արգելք, ռեսայիզ/պատկերների ալգորիթմ։
URL-metadation/fetchi: SSRF բլոկը (deny private ranges/metadata IP, միայն «https», allow-list թողարկումներ)։
SQL/Windows SQL-pattern 'WAF rule-sets + հարցումների սերվերացման ազդանշաններ։
Վերնագրերի քաղաքականության օրինակ (կեղծ ձևաչափ)
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) Լիմիտներ, քվոտաներ և հակատանկային պաշտպանություն
Rate limiting: token-bucket/ leaky-bucket; մակարդակները 'per IP, per API key, per user, per org։
Դելտաս 'ամենօրյա/ամսական, առանձին write/expensive մեթոդների համար։
Հարմարվողականություն 'դինամիկ խստացում անոմալիաների դեպքում (sudden burst/credential stuffing)։
Slow-loris/slow-POST: ընթերցանության/keep-alive թայմաուտները, զուգահեռ պարամետրերի սահմանափակումը։
Antibot: device-fingerprint, վարքագծային նշաններ, proof-of-work/գլխարկ ռիսկի վրա, tor/2019 ցանցերի ցուցակը։
IP վերահսկումը 'geo/ASN ֆիլտրեր, «կեղտոտ» հաշվարկների deny թերթիկներ, գործընկերների/admin վահանակների համար allow թերթիկներ։
9) Մուտքային տվյալների և սխեմաների վալիդացիան
Fail-closed: Այն ամենը, ինչ չի անցնում, 400 է։ Լրացուցիչ դաշտերը շեղվում են։
Տեսակներ/միջակայքներ ՝ թվեր, ամսաթվեր (UTC/MS-8601), enum-արժեքներ, տողերի երկարություն, ռեգեքսպներ։
JSON որակը 'max-nesting, մեծ զանգվածների արգելք/108, canonical order (oporational)։
Բիզնես-վալիդացիա '«Idempoty-Key» գաղափարախոսություն; anti-frod կանոնները (գործողության հաճախության սահմանները, amount caps)։
GraphQL: depth/complexity-limits, allow-listed queries, հեղինակային դաշտը։
GRPC 'խիստ Delobuf-սխեմաները, պարտադիր դաշտերը, հաղորդագրությունների չափի սահմանները։
10) Webhooks-ը և արտաքին մարտահրավերները
Ստորագրություններ ՝ HMAC timstamp/nonce; վերափոխումը մինչև վերամշակումը; պատուհան +/- 5 ռուբլի
Առաքում 'էքսպոնենցիալ դադար և ջիթեր։ max-փորձեր; dedeplication իրադարձական ID-ով։
IP allow-list 2019; առանձին տիրույթ/ճանապարհ; նվազագույն հոստինգը։
Պատասխանները ՝ 2xx միայն հաջողակ ներքին ձայնագրությունից հետո։ հակառակ դեպքում 4xx/5xx-ը հասկանալի կոդով։
SSRF-վերահսկումը 'callback URL-ը allow-list-ն է, մասնավոր հասցեների արգելքը։
11) Գաղտնագրումը և գաղտնիքները կառավարելը
Ջրանցքում ՝ TFC 1։ 2+/1. 3, pinning, խիստ ծածկագրերի քաղաքականություն։
Հանգիստ 'BD/օբյեկտի կոդավորումը, PII/findan-ի համար առանձին բանալիներ։
KFC/Vox: գաղտնիքների կենտրոնացված պահպանումը, կարճ TTL, ավտոմատ նավարկումը։
Բանալիներ և հավաստագրեր 'առանձին շրջակա միջավայրի համար։ կոդավորման աուդիտ; արգելում է դուրս գալ։
Token-introsp.ru: www.ru-ցուցակները (revocation), կարճ «exp»։
12) Դիտարկումը, աուդիտը և արձագանքը
Անվտանգության լոգները 'փորձարկումներ/մրցույթի հաջողություններ, հեղինակային իրավունքի մերժումներ, rate-limit իրադարձություններ, դերերի/սահմանների փոփոխություններ։
Ուղիներ ՝ www.relation-ID միջով; արտաքին զանգերի հետք։
Մետրիկները ՝ RPS, P95/P99 latency, error-rate կոդերով, 401/403/429, hit-rate, anomalia։
Ալերտները ՝ 401/403/429, 5xx աճը, հաճախակի idempotency հակամարտությունները, grofQL-complexity կտրուկ շեղումները։
Playbooks: արգելափակել 105/հոսանքները, արագ արձագանքել կանոնները, տաքացնել deny թերթիկը, ծանուցել ծառայությունների սեփականատերերին։
Ֆորենզիկա 'սպորտային payload պահպանումը (անվտանգ PII խմբագրությամբ), մեկուսացված պատի վրա։
13) Սխալներ և պատասխաններ հաճախորդի համար
Սխալների միասնական ձևաչափը (կոդը, հաղորդագրություն, trace-id, կատեգորիա)։
Առանց արտահոսքի 'մի բացահայտեք SQL-ը, աղյուսակների անունները, ներքին այդին։ 403 փոխարեն «ինչու՞ ոչ»։
Շվեյցարիա ՝ 400 (վալիդացիա), 401 (ոչ 105), 403 (ոչ ճիշտ), 404 (դիմակավորել գոյությունը), 407/406, 413/429, 500/503։
Retry-Hints: для 429 — `Retry-After`; համակրանքի համար 'նույն բանալին կրկնելու խորհուրդ։
14) Ճարտարապետական արտոնագրեր
Zero-Trust: mTSA-ը, որը ակնհայտ է բոլոր ծառայությունների միջև, նվազագույն արտոնություններ։
API-դարպասը + WAF + ծառայություն-մեշ 'պարտականությունների բաժանումը' պարիմետր, L7 քաղաքականություն, ներքին վավերացում։
Canary/Blue-Green: Նոր ֆիլտրման կանոններ փակցնել, բայց դիտարկմամբ։
Fail-closed: կրիտիկական write-ի համար ավելի լավ է ապահով հրաժարվել, քան թույլ տալ սխալ վիրահատություն։
Backpressure: Հերթեր/թողարկումներ, circuit breaker, timeouts/budgets։
15) Գործնական կանոնների օրինակներ (կեղծ-2019)
15. 1 Ճանապարհների և մեթոդների սահմանափակում
/api/v1/payments:
allow_methods: [POST, GET]
auth: oauth2_required body:
content_type: application/json max_size: 256KB
15. 2 Idempotenty
require_header: Idempotency-Key (UUIDv4)
store: redis:ttl=24h on_duplicate: return_previous_result
15. 3 Հարցման ստորագրություն (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 SSRF պաշտպանություն
outbound_http:
allowlist_domains: ["kyc. partner. com","psp. example. net"]
block_private_ip: true require_https: true
15. 5 GraphQL լիմիտ
graphql:
max_depth: 8 max_complexity: 500 allowlisted_operations_only: true
16) iGaming/ֆինանսական առանձնահատկությունները
Հատվածային լիմիտներ 'կախված են KUS/երկրից/ռիսկային լուծույթից։
Ժամանակավոր պատուհանները 'ավանդների/եզրակացությունների հաճախության կանոնները, գործարքների միջև «սառեցումը»։
Բոնուսների Anti-abuze 'խորհրդատվական արգելափակում հաշիվների/սարքի/IP/ստացիոնար գործիքի վրա։
Կարգավորիչների պահանջների աուդիտը 'գործողությունների և որոշումների լոգոների պահպանումը (KYC/AML), rentenshn ժամանակահատվածները, անփոփոխ ամսագրերը։
17) Բժշկական պատրաստվածության վերահսկման ցուցակը
- API-ի ամբողջական կատալոգը և տվյալների հոսքերի քարտեզը (PII/ֆինանսները նշված են)։
- OpenAPI/Eurobuf-սխեմաներ, վալիդացիայի թեստեր և պայմանագրեր CI-ում։
- mTFC/HMAC/OAuth2 տրամադրված է; կարճ TTL թոկեններ; միգրացիայի վերացումը։
- BOLA թեստեր և բացասական հեղինակային գործեր. կենտրոնացված PDP։
- Limits/քվոտաներ/anti-bot, պաշտպանություն slow-loris; IP ֆիլտրեր։
- WAF/գեյթվեյի կանոնները, հակաբիոտիկ ազդանշանները։
- Idempotention write վիրահատություն; պաշտպանություն replay-ից։
- Webhook ստորագրություններ և allow-list; մեկուսացված endpoinae։
- Գաղտնիքները KFC/Vox-ում; ծածկագրված ստորաջներ; ալերտներ անոմալիայի վրա։
- Dashbords, alerts, adit-logs; մշակված playbooks 2019։
- Ստացիոնար պենտեստ/DFC/SBS, խոցելիության հետքեր և պաթոմների դիֆերենցիալ։
18) Անտիպատեռնները (ինչը անհնար է)
Վստահել «X-Forwarded-» առանց TFC-ի խիստ տերմինիզացիայի իր պարագծի վրա։
Ընդունել կամայական «Content-Type» և «փափուկ» JSON սխեմաները։
Երկար գոյատևող JWT-ն առանց հետ կանչելու/ռոտացիայի։
Խառնեք դերերը և բիզնես կանոնները կոդում առանց կենտրոնացված քաղաքական գործչի։
Լոգները գաղտնիքներով/PII; մանրամասն 500 հաղորդագրությունները դուրս են գալիս։
«Ժամանակավոր» բաց էնդպոինտները առանց սահմանների և հեղինակային իրավունքի։
19) Տարբերակումը և դեպրեկտը
Ուղու/վերնագրի տարբերակները։ աջակցության քաղաքականությունը (օրինակ, N-2)։
Հայտարարությունները 'դեպրեսիտի ժամկետները, հին տարբերակների օգտագործումը, կառավարվող անջատումը։
Համատեղելիություն 'հաճախորդների/գործընկերների պայմանագրեր և թեստային մատրիցա։
20) Անվտանգության փորձարկում
Սխեմաների պայմանագրային թեստերը/քաղաքական, fuzzing մուտքեր, negative auth։
Պերֆոմանսի պրոֆիլները լիմիտների/քվոտաների հետ, պաշտպանության փորձարկումը (chaos-2019)։
Red-team/bug-bounty: BOLA, SSRF, ստորագրություններ/ակնարկներ, GraphQL-complexity։
TL; DR
1. API-ի կատալոգը + խիստ սխեմաներ է։
2. OAuth2/OIDC հաճախորդների համար, mTMS/HMAC ներսում։
3. BOLA-պարիմետրը յուրաքանչյուր ռեսուրսի վրա (ABAC/RBAC)։
4. Ֆիլտրում 'ճանապարհների/վերնագրերի նորմալացում, լիմիտներ, WAF կանոնները։
5. Idempotenty, ստորագրություններ, պաշտպանություն replay/SSRF-ից։
6. KFC/Vance-ը և գաղտնիքների լուծարումը։
7. Դիտարկումը, ալերտները, playbooks։