
מפענח JWT מפצל אסימון אינטרנט של JSON לשלושת הקטעים המופרדים בנקודות שלו, base64url-מפענח את הכותרת והמטען, ומציג את שניהם כ-JSON בפורמט. JWTs אינם מוצפנים - ה"קידוד" הוא רק base64url, טרנספורמציה הפיכה - כך שכל מי שמחזיק אסימון יכול לקרוא כל טענה בתוכו. הכלי הזה הופך את הבדיקה הזו לרגעית: הדבק אסימון מכותרת Set-Cookie, כותרת הרשאה (הקידומת של הנושא מופשטת אוטומטית), או מלוח המחוונים של ספק האישור שלך, וראה בדיוק מה השרת שלך שם שם.
טבלת התביעות היא המקום שבו איתור באגים מתרחש בפועל. תביעות זמן רשומות - EXP (תפוגה), IAT (הונפק ב-) ו-NBF (לא לפני) - הן חותמות זמן של UNIX, חסרות תועלת לקריאה RAW. המפענח ממיר כל אחד מהם לתאריך אנושי ולזמן יחסי ("פג תוקף לפני 3 שעות", "יפוג תוך 14 דקות") ואסימונים שפג תוקפם באדום. רוב האירועים "401 לא מורשים, אבל האסימון נראה בסדר" מסתכמים ב-EXP שפג תוקפו, NBF מוטה שעון או טענה של AUD שאינה תואמת את מה שה-API מאמת - הכל נראה כאן תוך שתי שניות.
דבר אחד הכלי הזה לא עושה בכוונה: לאמת חתימות. אימות דורש את סוד החתימה (HS256) או מפתח ציבורי (RS256/ES256), וכלי בצד הלקוח המבקש ממך להדביק סוד HMAC יהיה ללמד הרגלים רעים. הפענוח הוא 100% צד הלקוח - האסימון לעולם לא עוזב את הדפדפן שלך, לא פוגע בשרת ומופיע ביומן ללא בקשות, מה שחשוב כי JWT של ייצור חי הוא אישור נושא. כל מי שיש לו את זה, זה אתה.
הפענוח אינו מאמת, וההבחנה היא כל מודל האבטחה של JWT. הכותרת והמטען הם base64url, לא מוצפנים, כך שכל מי שמחזיק אסימון יכול לקרוא כל טענה בו ללא מפתח כלל. מה שהחתימה מספקת הוא הוכחה לכך שהתוכן לא השתנה, ובדיקתו דורשת את המפתח הסודי או הציבורי, שהוא פעולה בצד השרת. התייחס למטען כאל מידע ציבורי: לעולם אל תכניס בו משהו רגיש.
זרוק את ה-JWT לאזור הקלט. תפוס אותו מכותרת ההרשאה בדפדפן שלך DevTools Network Tab, קובץ Cookie, LocalStorage או תגובת תלתל. קידומת "נושא" מובילה והרווח הלבן שמסביב מופשטים אוטומטית, כך שתוכל להדביק את ערך הכותרת המלא ללא ניקוי.
שני הקטעים מעבדים כ-JSON מעוצב זה לצד זה. הכותרת אומרת לך את אלגוריתם החתימה (ALG: RS256, HS256 וכו') ומזהה מפתח (KID) - שימושי כאשר סיבוב ה-JWKS שלך מתנהג בצורה לא נכונה. המטען מכיל את הטענות: sub, iss, aud, scopes, roles, וכל הנתונים המותאמים אישית ששכבת האישור שלך הוסיפה.
תביעות זמן (EXP, IAT, NBF) מפוענחות משניות UNIX לתאריכים קריאים עם זמנים יחסיים. EXP שפג תוקפו מופיע באדום עם כמה זמן בדיוק הוא פג; תקף מופיע בירוק עם הזמן שנותר. אם NBF הוא בעתיד - בדרך כלל הטיית שעון בין השרתים שלך - האסימון יידחה למרות שהוא "נראה" בסדר.
כלי זה אף פעם לא בודק את החתימה - שדורשת את המפתח הסודי או הציבורי ושייך לשרת שלך, לא בכלי דפדפן. לעולם אל תתייחס לתביעות מפוענחות כקלט מהימן: תוקף יכול להטביע אסימון עם כל מטען שהוא רוצה. רק חתימה מאומתת מוכיחה שהטענות הגיעו מהמנפיק שלך ללא שינוי.
פענוח Base64URL ב-Pure TypeScript - שני מקטעי JSON מעוצבים וקריאים באופן מיידי
exp claition מסומן אדום כאשר פג תוקף, ירוק כאשר תקף, עם זמן יחסי מדויק בכל מקרה
EXP, IAT ו-NBF הומרו מ-RAW UNIX שניות לתאריכים של ISO וניסוח בסגנון "3 שעות"
הדבק את כל כותרת ההרשאה - "נושא" ורווח לבן תועה מופשטים אוטומטית
Generate MD5, SHA-1, SHA-256, SHA-384, and SHA-512 hashes from any text
Generate strong, random passwords with custom character sets and strength analysis
Test how strong a password is with an entropy-based strength meter, estimated crack times, and specific suggestions to make it harder to guess - all processed privately in your browser.
Paste a User-Agent string and read the browser, rendering engine, operating system, device type and CPU it describes, all in your browser.
0 comments
No comments yet. Be the first to share your thoughts!