GH GambleHub

JWT: сохтор ва осебҳо

1) JWT чист ва дар куҷо истифода мешавад

JWT як контейнери даъвогарони мустақилона дар формати 'Base64Url (сарлавҳа) мебошад. Base64Url (сарборӣ). Base64Url (имзо) '.

Истифода бурда мешавад барои:
  • JWS (аломатҳои имзошуда - ҳаққоният/якпорчагӣ),
  • JWE (нишонаҳои рамзшуда - махфият),
  • OIDC/OAuth2 ҳамчун аломати дастрасӣ/ID ва инчунин аутентификатсияи хидмат ба хидмат.

Тарафдор: мустақилият, қобилият, сарбории паст. Омӯз: хатари санҷиши нодуруст, ҳолатҳои бозхонди мураккаб.

2) Сохтори JWT

2. 1 Сарлавҳа (JSON)

Ҳадди аққал: алгоритм ва муайянкунандаи калидҳо.

json
{ "alg": "ES256", "kid": "jwt-2025-10", "typ": "JWT" }

'alg': алгоритми имзо/рамзгузорӣ (RS256/ES256/PS256/HS256 ва ғайра).
'kid': ишора ба калид (барои гардиши JWKS).
Манбаъҳои калидии ихтиёрӣ: 'jku', 'x5u' (нигаред ба осебпазирӣ § 6. 3).

2. 2 Сарборӣ (JSON)

Маркаҳои стандартӣ:
  • 'iss' (эмитент), 'aud' (аудитория), 'sub' (мавзӯъ)
  • 'exp' (мӯҳлати анҷом), 'nbf' (на пештар), 'iat' (дода шудааст)
  • 'jti' (ID токен, бозхонд)
  • тамғаҳои домейн: 'миқёс/нақшҳо', 'иҷорагир', 'kyc _ level' ва ғайра.

2. 3 Имзо

JWS = 'аломати (base64url (сарлавҳа) +. "" + base64url (сарборӣ), private_key)'

Санҷиш: калиди оммавии қатъии мувофиқ ва алгоритме, ки сервер интизор аст.

3) Инвариантҳои санҷиши асосӣ

1. Алгоритм бо конфигуратсияи сервери манбаъ (иҷозат-рӯйхат) собит мешавад ва ба мундариҷаи 'header эътимод надорад. алг '.
2. Барои бозии дақиқ 'iss' ва 'aud' -ро санҷед, 'exp/nbf' - бо назардошти 'clock _ skew' (± 30-60s).
3. Аломатҳои бе 'кӯдак' -ро рад кунед, танҳо агар калиди ягона ва гардиш вуҷуд надошта бошад; дар акси ҳол, "кӯдак" -ро талаб кунед.
4. Бе иҷозати сатҳи объект ба ягон марка эътимод накунед (BOLA-аввал).
5. Таҳлил - пас аз санҷиши крипто; андозаи асосӣ пеш аз рамзкушоӣ тафтиш мекунад.

4) JWS против JWE

JWS: имзо, вале хондан. Дар PII/сирри сарборӣ нагузоред.
JWE: сарбориро рамзгузорӣ мекунад; интегратсия мушкилтар аст, модели калидӣ муҳим аст.
Дар аксари API-ҳо, манъи JWS + ба маълумоти ҳассос дар сарборӣ кифоя аст.

5) Давраи ҳаёти токен

Дастрасӣ: кӯтоҳмуддат (5-30 дақиқа).
Тароват: дарозтар (7-30 рӯз), истифодаи гардиш (як маротиба), "рӯйхати сиёҳ" 'jti/sid' -ро нигоҳ доред.
Бекоркунӣ: рӯйхати 'jti' with TTL, introspection барои нишонаҳои ношаффоф, ихтисороти 'ҳодисаҳои exp' for.
Гардиши калидӣ: JWKS бо такрори (кӯҳна + нав), ба мақолаи "Гардиши калидҳо" нигаред.

6) Осебҳои зуд-зуд ва чӣ гуна пӯшидани онҳо

6. 'alg = ҳеҷ '/ивазкунии алгоритм

Сатри поён: Сервер ба майдони 'alg' эътимод дорад ва аломати имзошударо қабул мекунад.
Муҳофизат: рӯйхати алгоритмҳои сахт дар сервер; арзишҳои 'none' ва ғайричашмдоштро рад кунед.

6. 2 RS256 → своп HS256 (симметризатсия)

Сатри поён: ҳамлагар 'alg' with HS256 -ро иваз мекунад ва калиди оммавиро ҳамчун сирри HMAC истифода мебарад.
Муҳофизат: калиди алгоритмро бо конфигуратсия пайваст кунед; провайдерҳои симметрӣ/асимметрӣ дар як 'кудак' омехта накунед.

6. 3 Тазриқи калидӣ ('kid/jku/x5u')

Сенарияҳо:
  • 'jku' нуқта ба JWKS-и таҳти назорати ҳамлагар (калиди онро лағжонад).
  • 'x5u '/' x5c' abuse шаҳодатномаҳои беруна.
  • тазриқи роҳи 'kid' with/SQL ('.. "/../privkey. pem "ё" "OR 1 = 1 -" ').
Муҳофизат:
  • Нодида гирифтани 'jku/x5u' ё филтр аз тарафи доменҳои қатъии иҷозатдиҳӣ.
  • 'kid' should танҳо ҳамчун калид дар феҳристи маҳаллӣ (ҷадвал/кэш), бе пайраҳаҳои файл/ҳамоҳангсозии SQL истифода мешавад.
  • Сарбории JWKS аз URL-ҳои боэътимод, TTL-и кӯтоҳ, канали имзо/pinning.

6. 4 Асрори заифи HS256 (қувваи бераҳмона)

Сатри поён: Сирри HMAC кӯтоҳ/ихроҷшуда → ғоратгарӣ мебошад.
Муҳофизат: асимметрияро (RS/ES/PS) ё дарозии махфиро ≥ 256 бит, асрори - танҳо дар KMS истифода баред.

6. 5 Маркаҳои нопурра/беэътибор

No 'aud '/' iss '/' exp' → аломати байнишаҳрӣ ё беохир аст.
Хеле дароз 'exp' → хатари созиш.
Муҳофизат: маҷмӯи пурраи аломатҳоро талаб мекунад, 'exp' кӯтоҳ, 'nbf '/' iat' бо 'clock _ skew' тасдиқ карда мешавад.

6. 6 Такрори ва дуздии нишона

Моҳият: боздошт/такрори аломат (ихроҷ дар гузоришҳо, XSS, MitM бе TLS).

Муҳофизат:
  • TLS vezde, 'Secure' + 'Танҳо Http' куки, Ҳамон сайт = Lax/Strict.
  • DP op/P (ҳатмӣ кардани нишона ба калиди муштарӣ) ва/ё MTLS барои шарикон.
  • Кӯтоҳ 'exp', тароват-гардиш, ҳатмии дастгоҳ.

6. 7 Ихроҷи XSS/Анбор

Сатри поён: Нигоҳдории JWT дар 'LocAl Storage '/' session' Storage 'ба JS дастрас аст.
Муҳофизат: нишонаҳои дастрасии мағозаро дар HttPonly-cookie (агар модели куки имконпазир бошад) + намудҳои қатъии CSP/намудҳои боэътимод.
Барои SPA бе кукиҳо - аломати хотираро ҷудо кунед, ҳадди аққал зиндагӣ кунед, аз XSS муҳофизат кунед.

6. 8 CSRF

Сатри поён: ҳангоми ҷаласаҳои куки, дархостҳо аз сайти тарафи сеюм.
Муҳофизат: Нишонҳои якхела, анти-CSRF (пешниҳоди дукарата), чеки 'пайдоиш/Referer', филтрҳои Fetch-Metadata.

6. 9 Сӯиистифода аз ҳад зиёд/андоза

Gist: сарбории калон/сарлавҳаҳо, Do-S оид ба таҳлил.
Муҳофизат: маҳдудиятҳои унвон/андозаи бадан, пеш аз рад кардани 431/413, маҷмӯи мӯҳрҳо.

6. 10 Ивазкунии 'typ '/' cty'

Моҳият: нофаҳмиҳои намудҳо ('typ: "JWT"'), объектҳои ҷойгиршудаи JOSE.
Муҳофизат: 'typ/cty' -ро барои амният нодида гиред, ба алгоритмҳои собит ва схемаи брендинг такя кунед.

7) Нигоҳдорӣ ва интиқоли токен

7. 1 Сервери API (мошин ба мошин)

MTLS/HMAC, беҳтараш асимметрия барои JWT, каналҳо тавассути фикрию.
Дӯкони калидӣ - KMS/HSM, гардиши нақшавӣ, такрори JWKS.

7. 2 Мизоҷони браузер

HTTP Танҳо Cookie dlya дастрасӣ/тароват; TTL кӯтоҳ; навсозӣ - тавассути "таровати хомӯшӣ" бо 'Same' Site = None 'only зери HTTPS.
CSP-и қатъӣ, намудҳои боэътимод, аз XSS муҳофизат кунед; барои SPA - агар имкон бошад, нишонаро дар диск нигоҳ надоред.

8) JWKS, гардиш ва ба хотир овардан

JWKS аз ҷониби муаллифон нашр карда мешавад; истеъмолкунандагон 5-15 дақиқа кэш мекунанд.
Нақшаи гардиш: илова кардани 'кудак' -и нав → ба имзо расондани онҳо → пас аз N рӯз кӯҳнаро аз JWKS → тоза кунед.
Фикру мулоҳизаҳо: рӯйхати 'jti/sid' бо TTL; дар сурати рух додани ҳодиса, муваққатан коҳиш додани 'exp' ва вуруд ба маҷбурӣ (бозсозии ғайрифаъол).

9) Кам кардани шумораи иҷорагир ва кам кардани маълумот

'Иҷорагир '/' org' -ро танҳо дар ҳолати зарурӣ аз рӯи меъморӣ дохил кунед; дар акси ҳол, сифатҳоро аз ҲХДТ аз ҷониби 'sub' кашед.
Не PII-ҳо; маҷмӯи ҳадди аққали маркаҳо → хатари ихроҷ ва таносуб камтар аст.

10) Рӯйхати санҷиши амалии санҷиш (сервери манбаъ)

  • Парсим танҳо пас аз санҷиши имзо ва маҳдудиятҳои андозаи асосӣ.
  • 'alg' аз конфигуратсия; рад кардани шахсони ғайричашмдошт.
  • 'iss' ∧ 'aud' -ро санҷед ∧ 'exp' ∧ 'nbf' ∧ 'iat' (бо 'clock _ skew').
  • Санҷиши 'kid' дар феҳристи маҳаллӣ/JWKS (TTL кӯтоҳ).
  • Нишондиҳандаҳои берунаро филтр/муқаррар кунед ('jku/x5u' - танҳо иҷозат-рӯйхат).
  • Маҳдудияти дарозӣ/таркиб (схема).
  • Истифодаи иҷозати захираҳои объект (BOLA-аввал).
  • Log 'kids', 'sub', 'aud', 'iss', 'jti', 'exp', 'иҷорагир', 'trace _ id' (бе PII).
  • Нишондиҳандаҳои хатогиҳои имзо, таъхирҳо, аудити гардиш.

11) Намунаҳои сиёсати бехатар (псевдо)

11. 1 Танзими интизориҳои алгоритм

yaml jwt:
expected_issuer: "https://auth. example. com"
expected_audience: ["wallet-service"]
allowed_algs: ["ES256"] # fix the jwks_url: "https ://auth. example. com/.well-known/jwks. json"
jwks_cache_ttl: 600s clock_skew: 60s required_claims: ["iss","aud","sub","exp","iat"]

11. 2 Партофтани дурдасти 'jku/x5u'

yaml reject_untrusted_key_sources: true allowed_jku_hosts: ["auth. example. com"] # if absolutely necessary

11. 3 Рӯйхати фикру мулоҳизаҳо (Redis)

pseudo if redis. exists("revoke:jti:" + jti) then deny()
if now() > exp then deny()

12) Мушоҳида ва беморӣ

Метрикӣ: 'jwt _ verify _ fail _ total {сабаб}', 'jwt _ expired _ total', 'jwks _ refresh _ total', dolya 'кӯдак'.
Гузоришҳо (сохташуда): 'iss/aud/sub/kid/jti/exp/иҷорагир/trace _ id', сабаби нокомӣ.
Панели панелҳо: "ба қарибӣ ба охир мерасад", афзоиши хатогиҳои тасдиқкунӣ, тақсимот аз ҷониби минтақа/муштарӣ.
Огоҳиҳо: афзоиши 'verify _ fail' (имзо/алгоритм), хатогиҳои JWKS, ҳиссаи нишонаҳои мӯҳлати истифодашуда.

13) Антипаттернҳо

Trust 'alg' аз токен; дастгирии 'none'.
Нишонаҳои дастрасии дарозмуддат ва гардиши тароватбахш нестанд.
HS256 бо сирри кӯтоҳ/махфӣ дар ENV бе KMS.
Қабул кардани 'jku/x5u' аз ягон домен; ба таври динамикӣ JWKS-ро бидуни рӯйхати иҷозат бор кунед.
PII/сирри худро ба JWS бор кунед.
Ҳангоми мавҷудияти хавфҳои XSS нишонаҳо дар 'Storage' нигоҳ дошта мешаванд.
Бартараф кардани хатогиҳои тасдиқкунӣ (баргардонидани 200 с "хатои нарм").
Не BOLA тафтиш мекунад ва танҳо ба 'миқёс/нақш' такя мекунад.

14) Хусусиятҳои IGaming/Finance

Брендҳо: 'kyc _ level', 'risk _ tier', 'иҷорагир', қатъии 'aud'.
TTL-и кӯтоҳ барои амалиётҳои хаттӣ (амонатҳо/баромадҳо), POP/DP-и KPP ё MTLS барои хатсайрҳои муҳим.
Аудити танзимкунанда: гузоришҳои ивазнашавандаи воридот/нокомӣ, нигоҳдории гузоришҳо дар ҳудуди минтақа.
Шарикон/PSP калидҳои алоҳида/' aud ', калидҳои иҷорагир ва JWKS-и алоҳида доранд.

15) Рӯйхати санҷиши омодагии Prod

  • Рӯйхати сахт барои алгоритмҳо; 'none' иҷозат дода намешавад.
  • 'iss/aud/exp/nbf/iat/jti' тафтиш карда мешавад; кӯтоҳ 'exp'.
  • такрори JWKS, кэши кӯтоҳи TTL; мониторинги саҳмияҳои 'кӯдакон'.
  • Бозсозӣ - истифодаи гардиш; 'jti/sid' lists бо TTL; баррасии китоби бозӣ.
  • Po
  • Танҳо кукиҳо барои браузер, CSP/Намудҳои боэътимод ва XSS; Муҳофизати CSRF.
  • PII дар сарборӣ нест; маҷмӯи ҳадди ақали тамғаҳо.
  • Нишондиҳандаҳо/гузоришҳои санҷиш ва нокомӣ; ҳушдор медиҳад JWKS/verify_fail.
  • Санҷишҳои сенарияи манфӣ: RS → мубодилаи HS, 'кӯдакон' -биноҳо, ғоратгарӣ 'jku', азимҷусса, соатсозӣ.

16) TL; ДР

Алгоритм ва калидҳоро дар тарафи сервер ислоҳ кунед, ба 'alg' аз нишона эътимод накунед, талаб кунед 'iss/aud/exp/nbf/iat/jti'. Калидҳои гардишро тавассути такрори JWKS иваз кунед, нишонаҳои кӯтоҳмуддат ва тароватбахшро дар як вақт нигоҳ доред. Нишонаҳоро боэътимод нигоҳ доред (HttPonly-cookie барои веб), маркаҳоро кам кунед, PII-ро гузоред. Векторҳои 'jku/x5u/kid' -ро пӯшед, бо асрори заиф аз HS256 канорагирӣ кунед, дар роҳҳои интиқодӣ POP/DP PP ё MTLS илова кунед ва ҳамеша BOLA-ро дар сатҳи захираҳо тафтиш кунед.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Telegram
@Gamble_GC
Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.