MSMuhammad Shahid

כלי חינמי · רץ בדפדפן שלכם

מפענח JWT

הדביקו JSON Web Token כדי לקרוא את ה־header וה־payload ולראות מתי הוא הונפק ומתי פג תוקפו.

תשובה קצרה

ל־JWT יש שלושה חלקים מופרדים בנקודות: header,‏ payload וחתימה. שני הראשונים הם JSON בקידוד Base64URL, כך שכל אחד יכול לפענח ולקרוא אותם; רק החתימה מוכיחה שהטוקן אמיתי. הכלי מפענח את ה־header וה־payload והופך את exp,‏ iat ו־nbf לתאריכים קריאים. הוא לא מאמת את החתימה.

איך משתמשים

  1. הדביקו את הטוקן. העתיקו את ה־JWT מהאפליקציה, מ־Authorization header או מ־cookie והדביקו אותו בתיבה.
  2. קראו את החלקים. ה־header מציג את האלגוריתם; ה־payload מציג את ה־claims, כמו מזהה המשתמש וההרשאות.
  3. בדקו את הזמנים. הכלי מציג מתי הטוקן הונפק ומתי יפוג, והאם כבר פג תוקפו.

דוגמה

JWT חתום למשתמש עם תפקיד admin, בתוקף לשעה:

קלט

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzQyIiwibmFtZSI6IlNhcmEgTGV2aSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTc5MzUyMDAwMCwiZXhwIjoxNzkzNTIzNjAwfQ.1R3nQ-xp3SDmEZSSr355txmajhu1r1JjO863Li_Cam0

פלט

Header
{
  "alg": "HS256",
  "typ": "JWT"
}

Payload
{
  "sub": "user_42",
  "name": "Sara Levi",
  "role": "admin",
  "iat": 1793520000,
  "exp": 1793523600
}

Issued (iat):  2026-11-01T08:00:00Z
Expires (exp): 2026-11-01T09:00:00Z

שגיאות נפוצות ואיך לתקן אותן

הטוקן לא מפוענח
העתיקו רק את הטוקן. הסירו את הקידומת "Bearer ", מירכאות ושבירות שורה, ובדקו שיש בו בדיוק שתי נקודות.
jwt expired (TokenExpiredError)
זמן ה־exp עבר. קבלו access token חדש בעזרת ה־refresh token; אל תאריכו סתם את תוקף הטוקנים.
invalid signature
הטוקן נחתם בסוד או במפתח אחר מזה שהשרת משתמש בו, לרוב כי לסביבות או לשרתים יש סודות שונים. השתמשו באותו מפתח בכל מקום שמאמת טוקנים.
jwt not active (NotBeforeError)
זמן ה־nbf עוד בעתיד, בדרך כלל כי השעונים של השרתים לא מסונכרנים. סנכרנו שעונים עם NTP או אפשרו סטייה של כמה שניות.

שאלות נפוצות

בטוח להדביק כאן את ה־JWT שלי?

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

הכלי מאמת את החתימה של ה־JWT?

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

למה כל אחד יכול לקרוא את ה־payload?

ה־payload רק מקודד, לא מוצפן. לעולם אל תשימו סיסמאות או סודות ב־JWT.

מה המשמעות של exp,‏ iat ו־nbf?

exp הוא מועד התפוגה, iat הוא מועד ההנפקה ו־nbf הוא הזמן שלפניו הטוקן לא תקף. כולם חותמות זמן Unix בשניות.

למה משתמשים מתנתקים באקראי עם JWT?

בדרך כלל מרוצי refresh בין בקשות או לשוניות, הפרשי שעון, הגדרות cookie או סודות שונים בין שרתים. ראו את המאמר על תיקון באגים בסשנים של JWT.

מה ההבדל בין JWS ל־JWE?

JWS חתום אבל קריא, ורוב ה־JWT הם כאלה. JWE מוצפן, כך שאי אפשר לקרוא את ה־payload בלי המפתח. הכלי הזה מפענח רק טוקנים חתומים.

מה זה alg ב־header של JWT?

אלגוריתם החתימה, כמו HS256 (סוד משותף) או RS256 ו־ES256 (זוג מפתחות פרטי וציבורי). שרתים צריכים לקבל רק את האלגוריתמים שהם מצפים להם.

כמה זמן JWT צריך להיות תקף?

access tokens הם בדרך כלל קצרים, מדקות ועד שעה, עם refresh token ארוך יותר שמשמש לקבלת חדשים. טוקנים קצרים מגבילים את הנזק אם אחד דולף.

איפה לשמור JWT בדפדפן?

אפליקציות רבות שומרות את ה־refresh token ב־cookie מסוג httpOnly ו־Secure ואת ה־access token הקצר בזיכרון, וזה מגביל מה סקריפט זדוני יכול לקרוא.

אפשר לערוך את ה־payload ולהשתמש שוב בטוקן?

לא. שינוי של כל חלק פוסל את החתימה, ושרת שמוגדר נכון ידחה את הטוקן.

מקורות

קשור

עוד כלים בקבוצה הזו

מדריכים ואפליקציות