Амнияти API ва филтр кардани дархост
1) Чаро ба шумо лозим аст
API - сарҳади платформаи беруна ва дохилӣ. Ҳама гуна хатогӣ дар аутентификатсия, авторизатсия, тасдиқ ё ба эътидол овардани дархостҳо ба истифодаи осебпазирӣ табдил меёбад (BOLA/IDOR, тазриқ, SSRF, ҳисобкунии оммавӣ, фарсудашавии захираҳо). Мақсад: Эҷоди амиқи мудофиа аз периметр то қоидаҳои тиҷорат, бо SLO-ҳои ченшаванда ва назорати хатар.
2) Инвентаризатсия ва таснифи API
Феҳристи API: феҳристи ҳама хидматҳо/нуқтаҳои ниҳоӣ, соҳибон, версияҳо, намудҳои муштариён (веб, мобилӣ, шарикон), режим (ҷамъиятӣ/шарикӣ/дохилӣ), PII/маълумоти молиявӣ.
Танқид: Баланд (амалиётҳои молиявӣ/авторизатсия), Миёна (хониши профил), Паст (феҳристҳои ҷамъиятӣ).
Сатҳи ҳамла: REST, Graph
Статус: prod/staging/таҷрибавӣ, сиёсати беқурбшавӣ, мӯҳлати ҳаёт/калид.
API-и сояафкан/партофташуда: ошкоркунӣ тавассути гузоришҳои воридшаванда, телеметрияи EBPF/Service Mesh, муқоиса бо феҳрист.
3) Модели таҳдид (мухтасар)
Муайянсозӣ: рабудани токен, супориши сессия, MIT, такрорӣ.
Авторизатсия: BOLA/IDOR, шиддатёбии уфуқӣ/амудӣ.
Вуруд: тазриқ (SQL/No. SQL/LDAP), қолаб/сериализатсия, гузариши роҳ, сарлавҳаҳо.
Ҳаракати нақлиёт: DDoS/L7 обхезӣ, дархостҳои суст, такрори афсонавӣ.
Интегратсияҳо: веб-китобҳои хатарнок, SSRF тавассути параметрҳои URL, зеркашии файл/скан.
Мантиқ: сӯиистифода аз мукофотпулӣ, мусобиқа, номутобиқатии idempotence.
4) Стандарти асосии бехатарӣ (ҳадди аққал)
1. TLS 1. 2 + дар ҳама ҷо; HSTS; рамзҳои заиф ғайрифаъол мебошанд.
2. Аутентификатсия: OAuth2/OIDC барои мизоҷон, mTLS/ё HMAC - хизматрасонӣ ба-хизматрасонӣ.
3. Авторизатсия: PDP-и мутамарказ (RBAC/ABAC), Нозироти сатҳи объектҳо (BOLA).
4. Санҷиш: схемаи қатъӣ (Schema Open/JSON Schema/Protobuf), нокомӣ бо майдонҳои иловагӣ.
5. Маҳдудиятҳо: меъёри/квотаҳо + бурида, барои як муштарӣ/як IP/барои як нишона.
6. Idempotence оид ба амалиёти навиштан, муҳофизат аз такрори/нажодҳо.
7. Филтри WAF/дарвоза: муътадилсозии роҳ/сарлавҳа, рад кардани рӯйхатҳо, блоки боркаши зидди намунаҳо.
8. Асрори: KMS/Vault, гардиши калид/сертификат, назорати ихроҷ.
9. Мушоҳида: пайгирӣ, сабтҳои аудити амният (кӣ/чӣ/вақте/натиҷа), огоҳӣ.
10. Тартибот: ҳодисаҳои дафтарчаи бозӣ, парвандаҳои санҷишӣ ва пентестҳои муқаррарӣ/DAST.
5) Идоракунии аутентификатсия ва нишона
OAuth2/OIDC: аломатҳои дастрасии кӯтоҳмуддат, мувофиқи OIDC ба таври қатъӣ тароват гиред; аудитория/эмитент/exp дар дарвоза тафтиш карда мешаванд.
JWT: RS256/ES256; маҷмӯи ҳадди аққали clams; 'nbf/exp/aud' талаб карда мешавад; манъи нигоҳдории PII. Гардиши калидӣ тавассути JWKS.
DP oP/POP: Барои кам кардани хатари такрорӣ/рабудан ба калиди муштарӣ пайванд кунед.
MTLS барои системаҳои дохилӣ ва шарикони боэътимод (тахассуси CN/SAN, CRL/OCSP).
HMAC (имзоҳо): каноникализатсияи детерминистӣ (усул + роҳ + вақт + nonce + body-hash); равзанаи вақти дуруст (± 30).
Ҷаласаҳои браузер: Same Муҳофизати CSRF (пешниҳоди дукарата/аломатҳои давлатӣ).
Нигоҳдории мизоҷ: дар мобилӣ - нигаҳдории бехатар (Keychain/Keystore), муҳофизати ислоҳи хатоҳо, шаҳодатномаҳои пинҳонӣ.
6) Авторизатсия (BOLA-аввал)
Сатҳи объект: ҳар як амал ҳуқуқи ба манбаи мушаххас (соҳиби манбаъ/миқёс/атрибутҳо) -ро месанҷад.
RBAC/ABAC: нақшҳо + хусусиятҳо (кишвар, сегмент, маҳдудиятҳои хатар, сатҳи KYC)
Сиёсатҳо: рад кардани пешфарз; иҷозати возеҳ; Санҷишҳои таҳрири сиёсат барои ҳолатҳои манфӣ.
Кэши қарор: мутобиқшавии TTL + маъюбӣ дар тағир додани нақшҳо/сегментҳо.
7) Филтр ва муқарраркунии дархостҳо (дар дарвоза/WAF)
Нормализатсия: фишурдани зарбаҳои такрорӣ, манъкунӣ '../', як маротиба рамзкушоӣ, буридани фосила/байтҳои сифр.
Сарлавҳаҳо: рӯйхати иҷозат ('Мизбон', 'Намуди мундариҷа', 'Қабул', 'Авторизатсия', 'Сана', 'Идемпотенсия-Калид', сарлавҳаҳои зарурии пайгирӣ).
Усулҳо: 'GET/HEAD' бе бадан; 'POST/PUT/PATCH' - бо навъи 'ариза/json' ё ба таври қатъӣ иҷозат дода мешавад.
Андозаҳо: max-body, max-headers, max-path; барвақт рад кардани 413/431.
Файлҳо: validator MIME, антивирус/қуттии қуттӣ, манъи мундариҷаи фаъол, коркарди тасвир/санитария.
Масири URL/fetchi: Блоки SSRF (рад кардани диапазонҳои хусусӣ/метамаълумоти IP, схема танҳо 'https', доменҳои иҷозатдиҳӣ).
Намунаҳои SQL/No-SQL: имзоҳои тазриқӣ тавассути қоидаҳои WAF + параметри серверҳои дархостҳо.
Мисоли сиёсати сарлавҳа (Формати псевдо)
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) Маҳдудиятҳо, квотаҳо ва ҳифзи антибот
Маҳдудияти нархҳо: сатил-сатил/сатил-сатил; сатҳҳо - барои як IP, барои як калиди API, барои як корбар, барои org.
Квотаҳо: ҳамарӯза/ҳармоҳа, барои усулҳои навиштан/васеъ ҷудо.
Мутобиқшавӣ: мустаҳкамкунии динамикӣ дар зери аномалияҳо (таркиши ногаҳонӣ/қуттиҳои эътимоднок).
Slow-loris/slow-POST: танаффусҳои хондан/нигоҳ доштан, маҳдудияти ҳамзамон пайвастшавӣ.
Антибот: изи ангуштони дастгоҳ, аломатҳои рафтор, исботи кор/капта барои зиёд кардани хатар, рӯйхати шабакаҳои торус/прокси.
Назорати IP: филтрҳои geo/ASN, рӯйхати зершабақаҳои "ифлос" -ро рад кунед, рӯйхатҳоро барои шарикон/панелҳои маъмурӣ иҷозат диҳед.
9) Тасдиқи додаҳои вуруд ва схемаҳо
Нокомӣ: Ҳар он чизе, ки схемаро иҷро намекунад, 400 аст. Майдонҳои иловагӣ - рад кунед.
Намудҳо/диапазонҳо: рақамҳо, санаҳо (UTC/ISO-8601), арзишҳои энум, дарозии хат, регекспс.
Сифати JSON: макс-лона, манъи массивҳо/калидҳои калон, тартиби каноникӣ (ихтиёрӣ).
Тасдиқи тиҷорат: номутобиқатӣ аз рӯи 'Idempotency-Key'; қоидаҳои зидди қаллобӣ (маҳдудиятҳои басомади амалиёт, ҳадди ақалли маблағ).
Диаграммаи QL: маҳдудиятҳои амиқӣ/мураккаб, дархостҳои номбаршуда, иҷозат барои як майдон.
GRPC: схемаҳои қатъии Protobuf, майдонҳои ҳатмӣ, маҳдудиятҳои андозаи паём.
10) Webhooks ва зангҳои беруна
Имзоҳо: HMAC бо timestamp/nonce; санҷиш пеш аз коркард; тиреза +/- 5 дақ.
Таҳвил: Retrai бо таваққуфи экспоненсиалӣ ва jitter; макс-кӯшишҳо; Deduplication ID ҳодиса
Фурӯшандаи IP ба рӯйхати алоҳидаи subdomain/роҳ; анбори ҳадди аққали хостинг.
Ҷавобҳо: 2xx танҳо пас аз сабти бомуваффақияти дохилӣ; вагарна 4xx/5xx бо рамзи равшан.
Назорати баромади SSRF: ҳангоми бозгашт URL - рӯйхати иҷозат, суроғаҳои хусусиро рад кунед.
11) Рамзгузорӣ ва идоракунии махфӣ
Дар канал: TLS 1. 2+/1. 3, пинҳонӣ, сиёсати рамзгузории қатъӣ.
Танҳо: Рамзгузории нигаҳдории DB/объект, калидҳои алоҳида барои маълумоти PII/молиявӣ.
KMS/Vault: нигаҳдории мутамаркази асрҳо, TTL кӯтоҳ, гардиши автоматӣ.
Калидҳо ва шаҳодатномаҳо: алоҳида барои муҳит; аудити масъалаҳо; манъи баромад ба гузоришҳо.
Токен-интроспексия: рӯйхати бекоркунии офлайнӣ, кӯтоҳ 'exp'.
12) Мушоҳида, аудит ва вокуниш
Гузоришҳои амниятӣ: кӯшиши/муваффақиятҳои аутентификатсия, нокомии авторизатсия, рӯйдодҳои маҳдудкунанда, тағирот дар нақш/маҳдудият.
Пайгирӣ: коррелятсия-ID охири-ба-охир; пайгирии зангҳои беруна.
Нишондиҳандаҳо: RPS, таъхири P95/P99, хатогӣ аз рӯи рамз, ҳиссаи 401/403/429, маҳдудиятҳои хит, аномалияҳо.
Огоҳиҳо: хӯшаҳои 401/403/429, афзоиши 5xx, муноқишаҳои зуд-зуд идемпотентсия, тамоюлҳои тези графикаи мураккабии QL.
Китобҳои бозӣ: бастани калидҳо/нишонаҳо, зуд баргардонидани қоидаҳо, гарм кардани рӯйхати радкунӣ, огоҳ кардани соҳибони хидматҳо.
Криминалистика: нигоҳ доштани сарбории баҳснок (бо таҳрири бехатари PII), такрорӣ дар мавқеи ҷудогона.
13) Хатогиҳо ва ҷавобҳо ба муштарӣ
Формати хатогии ягона (рамз, паём, пайгирӣ-id, категория).
Ягон ихроҷ нест: SQL, номҳои ҷадвал, идияҳои дохилиро ифшо накунед; 403 ба ҷои "чаро не".
Рамзҳо: 400 (тасдиқ), 401 (аутентификатсия), 403 (ҳуқуқ надорад), 404 (мавҷудияти ниқоб), 405/406, 413/429, 500/503.
Retry-Hints: для 429 - 'Retry-After'; барои idempotency - маслиҳат оид ба такрор бо ҳамон калид.
14) Намунаҳои меъморӣ
Zero-Trust: MTLS, иҷозати возеҳ байни ҳамаи хидматҳо, имтиёзҳои ҳадди ақал.
Дарвозаи API + WAF + торҳои хидматрасонӣ: тақсимоти вазифаҳо - периметр, сиёсати L7, аутентификатсияи дохилӣ.
Канария/кабуд-сабз: Қоидаҳои нави филтратсияро дар марҳилаҳо бо назорат таҳия кунед.
Нокомӣ: барои навиштани интиқодӣ беҳтар аст, ки аз иҷозати кори нодуруст даст кашед.
Backpressure: навбатҳо/буферҳо, рахи барқ, танаффус/буҷа.
15) Намунаҳои қоидаҳои амалӣ (псевдо-конфиг)
15. 1 Маҳдудияти роҳҳо ва усулҳо
/api/v1/payments:
allow_methods: [POST, GET]
auth: oauth2_required body:
content_type: application/json max_size: 256KB
15. 2 Идемпотенция
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:
max_depth: 8 max_complexity: 500 allowlisted_operations_only: true
16) Хусусиятҳои IGaming/Finance
Маҳдудиятҳои сегмент: вобаста аз CCM/кишвар/профили хатар.
Тирезаҳои вақт: қоидаҳои басомади пасандоз/бозхонд, "хунуккунӣ" байни амалиётҳо.
Сӯиистифодаи бонус: қулфҳои пайваста дар суратҳисоб/дастгоҳ/IP/воситаи пардохт.
Аудити талаботи танзим: нигоҳдории гузоришҳои амалҳо ва қарорҳо (KYC/AML), мӯҳлати нигоҳдорӣ, гузоришҳои бетағйир.
17) Рӯйхати санҷиши омодагии Prod
- Феҳристи пурраи API ва харитаи ҷараёни маълумот (PII/молия қайд карда шудааст).
- Схемаҳои кушодани API/Protobuf, санҷишҳои тасдиқкунӣ ва шартномаҳо дар CI.
- mTLS/HMAC/OAuth2 танзим шудааст; аломатҳои кӯтоҳи TTL; гардиши калидӣ.
- Санҷишҳои BOLA ва ҳолатҳои иҷозатдиҳии манфӣ; марказонидашудаи ҲХДТ.
- Маҳдудиятҳо/квотаҳо/анти-бот, муҳофизат аз суст-лорис; Филтрҳои IP.
- Қоидаҳои муқарраркунии WAF/дарвоза, имзоҳои зидди тазриқӣ.
- Идентификатсияи амалиёти навиштан; муҳофизат аз такрорӣ.
- Имзои Webhook ва рӯйхати иҷозат; нуқтаҳои ҷудошуда.
- Асрҳо дар KMS/Vault; анборҳои рамзишуда; ҳушдор ба аномалия.
- Панели панелҳо, огоҳиҳо, гузоришҳои аудит; ҳодисаҳои дафтарчаҳои корӣ.
- Пентести мунтазам/DAST/SAST, роҳҳои осебпазирӣ ва зеркашии ячейка.
18) Антипаттернҳо (ки ин имконнопазир аст)
Ба 'X-Forwarded -' бидуни TLS қатъӣ дар периметри худ эътимод кунед.
Схемаҳои ихтиёрии 'Content-Type' ва "мулоим" JSON-ро қабул кунед.
JWT-ҳои дарозмуддат бидуни ёдоварӣ/гардиш.
Нақшҳо ва қоидаҳои тиҷоратро дар код бидуни сиёсати мутамарказ омехта кунед.
Гузоришҳо бо асрори/PII; муфассал 500-паём ба берун.
Нуқтаҳои кушоди "муваққатӣ" бидуни маҳдудият ва иҷозат.
19) Версия ва депрессия
Версияҳо дар роҳ/сарлавҳа; сиёсати дастгирӣ (мас. Н-2).
Эълонҳо: мӯҳлатҳои беқурбшавӣ, мониторинги истифодаи версияҳои кӯҳна, қатъкунии назоратшаванда.
Мутобиқат: шартномаҳои муштариён/шарикон ва матритсаи тестӣ.
20) Санҷиши бехатарӣ
Озмоишҳои шартномавии схемаҳо/сиёсатҳо, воридоти номуайян, аут манфӣ.
Профилҳои фаъолият бо маҳдудиятҳо/квотаҳо, санҷиши муҳофизатӣ (трафики бетартибӣ).
Гурӯҳи сурх/bug-bounty: скриптҳои BOLA, SSRF, имзоҳо/такрорӣ, мураккабии Graph
TL; ДР
1. Феҳристи API + схемаҳои қатъӣ.
2. OAuth2/OIDC барои мизоҷон, MTLS/HMAC дар дохили.
3. Периметри BOLA барои як манбаъ (ABAC/RBAC).
4. Филтр: ба эътидол овардани роҳҳо/сарлавҳаҳо, маҳдудиятҳо, қоидаҳои WAF.
5. Idempotence, имзоҳо, такрори/SSRF муҳофизат.
6. KMS/Vault ва гардиши махфӣ.
7. Мушоҳида, огоҳӣ, китобҳои бозӣ.