GH GambleHub

JWT: מבנה ופגיעות

1) מהו JWT והיכן משתמשים בו

JWT הוא מיכל תביעות עצמאי קומפקטי בפורמט Base64Url (כותרת). Base64Url (מטען). Base64Url (חתימה) ".

משמש ל:
  • JWS (אסימונים חתומים - אותנטיות/שלמות),
  • JWE (אסימונים מוצפנים - פרטיות),
  • OIDC/OAuth2 כמו אסימוני גישה/תעודת זהות כמו גם אימות שירות לשירות.

מקצוענים: אוטונומיה, קבילות, תקורה נמוכה. חסרונות: סיכון לאימות שגוי, מקרי החזרה מורכבים.

2) מבנה JWT

2. כותרת 1 (JSON)

מינימום: אלגוריתם ומזהה מפתח.

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

אלגוריתם חתימה/הצפנה (RS256/ES256/PS256/HS256, וכו ').
מצביע למפתח (לסיבוב JWKS).
מקורות מפתח אופציונליים: 'jku', 'x5u' (ראה נקודות תורפה # 6. 3).

2. 2 מטען (JSON)

בולים סטנדרטיים:
  • 'iss' (שליח),' ad '(קהל),' sub '(נושא)
  • 'exp' (זמן תפוגה), 'nbf' (לא לפני), 'iat' (הנפיק)
  • 'Jti' (תעודת זהות סמלית, ביטול)
  • חותמות דומיין: ”היקף/תפקידים”, ”דייר”, ”kyc _ level” וכו '.

2. 3 חתימה

JWS = 'sign (base64url (header) +. ”+ base64url (payload), private_key)”

אימות: מפתח ציבורי מתאים בדיוק ובדיוק האלגוריתם שהשרת מצפה לו.

3) סימון אינווריאנטים בסיסיים

1. האלגוריתם קבוע על ידי ההגדרות של שרת המשאבים (low-list), ולא ניתן לסמוך על התוכן של ”header”. אלג '.
2. בדוק אם יש התאמה מדויקת, ”exp/nbf” - אם לוקחים בחשבון את ”השעון הקטן _ skew” (שנות ה ־ 30-60).
3. למנוע אסימונים בלי ”ילד” רק אם יש מפתח אחד ולא סיבוב; אחרת, לדרוש 'ילד'.
4. אל תסמוך על בולים ללא אישור רמת אובייקט (BOLA-first).
5. אימות קריפטו לאחר ניתוחים; בדיקות גודל בסיסיות לפני פענוח.

4) JWS נגד JWE

חתום אך ניתן לקריאה. אל תשים מטען PII/סודות.
JWE: הצפנת מטען; אינטגרציה היא קשה יותר, מודל המפתח הוא קריטי.
ברוב ה-API, איסור JWS + על מידע רגיש במטען הוא מספיק.

5) מחזור חיים סמלי

גישה: לטווח קצר (5-30 דקות).
רענון: ארוך יותר (7-30 יום), סיבוב-על-שימוש (באופן חד-פעמי), שמור את "הרשימה השחורה" "jti/sid'.
ביטול: רשימות 'jti' with TTL, introspection עבור אסימונים אטומים, קיצור 'expp' עבור אירועים.
סיבוב מפתח: JWKS עם חפיפה (ישן + חדש), ראה המאמר ”סיבוב מפתח”.

6) נקודות תורפה וכיצד לסגור אותן

6. 1 &osposcallg = אין החלפת אלגוריתם '/

שורה תחתונה: השרת סומך על שדה ה ”אלג” ומקבל אסימון לא חתום.
הגנה: רשימה קשה של אלגוריתמים בשרת; דוחה 'none' וערכים בלתי צפויים.

6. 2 RS256 * החלפת HS256 (סימטריזציה)

שורה תחתונה: תוקף מחליף 'alg' with HS256 ומשתמש במפתח הציבורי כסוד HMAC.
הגנה: לקשור את המפתח לאלגוריתם עם תצורה; לא לערבב ספקים סימטריים/אסימטריים באחד.

6. 3 הזרקת מפתח (”kid/jku/x5u”)

תרחישים:
  • 'JKU' מצביע JWKS (יחליק המפתח שלה).
  • x5u/x5 'c שימוש לרעה בתעודות חיצוניות.
  • 'kid' with/SQL הזרקת נתיב ('.. "//פריקי. pem 'or' OR '1 = 1 -').
הגנה:
  • התעלם מ ־ jku/x5u או מסנן על ־ ידי תחומים המחמירים ברשימה.
  • 'Kid' schid' ll לשמש רק כמפתח בספרייה המקומית (שולחן/מטמון), ללא שבילי קובץ/קונקטורות SQL.
  • טעינת JWKS מכתובות נאמנות, TTL קצר, ערוץ חתימה/פינג.

6. 4 סודות חלשים של HS256 (כוח גס)

שורה תחתונה: סוד HMAC הוא זיוף חתימה קצר/דלף.
הגנה: השתמש באסימטריה (RS/ES/PS) או באורך סודי של 256 סיביות, סודות - רק ב ־ KMS.

6. 5 בולים חסרים/לא תקפים

לא 'Aud'/' is '/' exp' אסימון הוא חוצה שירות או אינסופי.
סיכון ארוך מדי לפשרה.
הגנה: דרוש סט מלא של סימנים, ”exp” קצר, ”nbf ”/” iat” לאמת עם ”שעון _ skew”.

6. 6 שידור חוזר וגניבת סמלים

תמצית: יירוט/חזרה של אסימון (דליפה ביומנים, XSS, MITM ללא TLS).

הגנה:
  • עוגיית ”Secure” + ”HttpOnly”, אתר חפירה = Lax/Strict.
  • DPoP/PoP (קשירת אסימון למפתח לקוח) ו/או mTLS לשותפים.
  • קיצור ”exp”, רענון-סיבוב, התקן מחייב.

6. 7 דליפות XSS/אחסון

שורה תחתונה: אחסון JWT ב ־ ”אחסון ”/” אחסון ” זמין ל ־ JS.
הגנה: אסימוני גישה לחנות ב-HttpOnly-Cookie (אם מודל העוגיות אפשרי) + CSP/Trust Types.
עבור ספא ללא עוגיות - לבודד את האסימון בזיכרון, לחיות באופן מינימלי, להגן מפני XSS.

6. 8 CSRF

השורה התחתונה: במהלך פגישות עוגיות, בקשות מאתר צד שלישי.
הגנה: Survide Site, anti-CSRF tokens (הגשה כפולה), 'Origin/Referer' check, Fetch-Metadata filters.

6. 9 ניצול יתר של גודל/גודל

מטען/כותרות ענק, DOS על ניתוחים.
הגנה: הגבלת גודל הכותרת/גוף, דחייה מוקדמת 431/413, סט קבוע של בולים.

6. 10 הצבה "typ "/" cty&fs

מהות: בלבול של סוגים (”Typ: JWT”), אובייקטים מקוננים של חוזה.
הגנה: להתעלם ”Tip/Cty” לאבטחה, להסתמך על אלגוריתמים קבועים ותוכניות מיתוג.

7) אחסון והעברה

7. 1 APIs שרת (מכונה אל מכונה)

MTLS/HMAC, עדיף אסימטריה עבור JWT, ערוצים דרך רשת.
חנות מפתחות - KMS/HSM, סיבוב מתוכנן, JWKS חופף.

7. 2 לקוחות דפדפן

עוגייה מאובטחת HTTPLY Assess Access/Ranuh; קיצור TL; עדכון באמצעות ”רענון שקט” עם ”אתר חנייה” אף אחד לא תחת HTTPS.
CSP קפדן, טיפוסים מהימנים, להגן מפני XSS; לספא - אם אפשר, אל תאחסן את האסימון בדיסק.

8) JWKS, סיבוב והיזכרות

JWKS פורסם על ידי האישור; מטמון צרכנים במשך 5-15 דקות.
תכנית סיבוב: הוסף 'ילד' חדש. תתחיל אותם חתימה. = לאחר N ימים להסיר את הישן מטיהור JWKS.
משוב: רשימות jti/sid עם TTL; במקרה של תקרית, להפחית באופן זמני 'exp' ו-loading-out (רענון לנטרול).

9) ריבוי דיירים ומזעור נתונים

כלול ”דייר ”/” org” באסימון רק אם יש צורך בארכיטקטורה; אחרת, למשוך את התכונות מ PDP by 'sub.
אין מח "ש; מינימום של בולים = פחות סיכון לדליפות וקורלציה.

10) רשימת אימות מעשית (שרת משאבים)

[ ] פרסים רק לאחר אימות של חתימה ומגבלות גודל בסיסיות.
[ ] ”אלג” מהתצורה; לדחות את הבלתי צפויים.
[ ] Check 'is' is' is' ud' d' id' ud' d' exp' nbf 'iat' (עם ”שעון _ skew”).
[ ] בדוק בספרייה המקומית/JWKS (בקיצור TTL).
[ ] מסנן/מנרמל עצות חיצוניות ('jku/x5u' -רשימה חופשית בלבד).
[ ] הגבלת אורך בול/קומפוזיציה (scheme).
[ ] Object Resource Authority (BOLA-First).
[ ] בול עץ 'ילד', 'תת', 'אוד', 'is',' 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&fs

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

11. 3 רשימת משוב לדוגמה (רדיס)

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

12) יכולת תצפית ושכיחות

”jwt _ verience _ fall _ total _ reason”, ”jwt _ fied _ total”, ”jwks _ runh _ total”.
לוגים (מובנים): 'is/aud/sub/kid/jti/exp/trace _ id', סיבה לכישלון.
לוחות מחוונים: ”פג תוקף בקרוב”, נחשול בשגיאות אימות, הפצה על ידי אזור/לקוח.
התראות: גידול של 'veriation _ fall' (חתימה/אלגוריתם), שגיאות JWKS, שיתוף אסימונים שפג תוקפם.

13) תרופות אנטי ־ פטריות

אמון 'alg' מסמל; תמיכה 'none'.
אסימוני גישה ארוכי חיים ולא סיבוב רענון.
HS256 עם סוד/סוד קצר ללא KMS.
קבל 'jku/x5u' מכל תחום; באופן דינמי להעמיס JWKS ללא הרשאות רשימה.
שים סודות פיי-איי-איי במטען JWS.
לאחסן אסימונים ב ”אחסון” כאשר קיים סיכון XSS.
דיכוי שגיאות אימות (החזר 200 S ”שגיאה רכה”).
אין בדיקת בולה והסתמכות רק על ”היקף/תפקיד”.

14) פרטים של iGaming/Finance

מותגים: "kyc _ level", "סיכון _ tier", "דייר", "aud' קפדני.
TTL קצר לפעולות כתיבה (מרבצים/יציאות), PoP/DPoP או mTLS למסלולים קריטיים.
ביקורת רגולטורית: יומנים בלתי ניתנים לשינוי של כניסות/כשלים, אחסון יומנים בתוך גבולות האזור.
לשותפים/PSP יש מפתחות נפרדים, מפתחות דייר ו ־ JWKS נפרדים.

15) רשימת מוכנות למומחים

[ ] קשה לאפשר רשימה של אלגוריתמים; ”אף אחד” אסור.
[ בודקים את ]/aude/exp/nbf/iat/jti; קיצור 'exp'.
[ ] חפפו את JWKS, מטמון TTL קצר; ניטור מניות 'ילד'.
[ ] רענון - לסובב-על-שימוש; 'jti/sid' lists עם TTL; ספר המהלכים.
[ ] PoP/DPoP או mTLS במסלולים קריטיים.
[ ] Httpally-cookies לדפדפן, CSP/Trust Types vs. XSS; הגנת CSRF.
[ ] אין מח "ש במטען; מינימום של סימנים.
[ ] אימות וכישלון מדדים/יומנים; מתריע JWKS/verify_fail.

בדיקות תרחיש שליליות: RS = החלפת HS, "ילד" - התלבטויות, "jku 'hoffing, גדול מדי, מחליק שעון.

16) TL; DR

תקן את האלגוריתם והמפתחות בצד השרת, אל תסמוך על ”alg” מהאסימון, ודרוש 'is/aud/exp/nbf/iat/jti'. לסובב מפתחות דרך JWKS חופפים, לשמור אסימונים קצר חיים ולרענן חד פעמי. לאחסן אסימונים באופן בטוח (HttpOnly-Cookie for the Web), למזער בולים, לא לשים PII. סגור 'jku/x5u/kild' וקטורים, להימנע HS256 עם סודות חלשים, להוסיף PoP/DPoP או mTLS על מסלולים קריטיים, ותמיד לעשות בדיקות בולה ברמת המשאב.

Contact

צרו קשר

פנו אלינו בכל שאלה או צורך בתמיכה.אנחנו תמיד כאן כדי לעזור.

Telegram
@Gamble_GC
התחלת אינטגרציה

Email הוא חובה. Telegram או WhatsApp — אופציונליים.

השם שלכם לא חובה
Email לא חובה
נושא לא חובה
הודעה לא חובה
Telegram לא חובה
@
אם תציינו Telegram — נענה גם שם, בנוסף ל-Email.
WhatsApp לא חובה
פורמט: קידומת מדינה ומספר (לדוגמה, +972XXXXXXXXX).

בלחיצה על הכפתור אתם מסכימים לעיבוד הנתונים שלכם.