דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. JWT

JWT

מתוזמן נעוץ נעול הועבר תכנות
10 פוסטים 6 כותבים 409 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח מנותק
    ח מנותק
    חוקר
    כתב ב נערך לאחרונה על ידי
    #1

    אני משתמש בJWT לאימות משתמשים באתר שלי
    בקצרה זה עובד שיש לי secret קבוע המורכב מסטרינג של תווים וסימנים וכו' ארוך שאני יצרתי, וכל פעם שאני יוצר טוקן זה מקבל את ה secret ותוקף ונתונים אופציונאלים כגון פרטי ID של המשתמש וכו' וזה לוקח את ה secret ובאיזה שהיא דרך מצפין את המידע והתוקף.
    בעת הזדהות הוא מפרק את הטוקן מול קוד ההצפנה שנוצר מה secret שלי, ואם זה תואם הטוקן מפוענח ונעשית בדיקה שהתוקף בסדר וזה תקין
    הטוקנים לא נשמרים כלל בבסיס נתונים אלא תמיד בהשוואת הטוקן מול secret יש את המידע האם הטוקן טוב או לא, ולכן אין אפשרות למחוק טוקן, (אלא א"כ ע"י התערבות חיצונית של רשימת טוקנים חסומים וכדומה)
    עד כאן פחות או יותר מה שהבנתי
    משהו אחד לא כ"כ ברור לי, לו יכולתי לזייף טוקן, דהיינו ליצור מחרוזת שהפיענוח שלה תתאים לsecret הנמצא בשרת הנתקף, יהיה לי גישה כאילו יש בידי טוקן שנוצר באמת ע"י השרת? דהיינו לאפוקי מעוגיות שבדר"כ יש בשרת טבלה של העוגיות והתוקף והשרת בודק בטבלה האם יש לו עוגיה כזו ולא פג תוקף, ואם לא יצרתי מעולם את העוגיה זה אף פעם לא יעבוד, ב JWT אם אני מבין נכון באמת לא צריך בכלל ליצור את הטוקן, אלא הוא פתוח מתחילה ועד סוף שבמידה ויש טוקן שתואם לsecret זה יתן להמשיך הלאה
    תיאורטי אם אני יריץ תוכנה שתעבור עם לולאה ותנסה לפרוץ את השרת ע"י שליחה של מיליארדי מחרוזות של צירופי אותיות וכו' שיגיע בסוף לטוקן אמיתי זה יהיה אמור להיפרץ למרות שמעולם לא יצרתי כזה טוקן.
    הבנתי נכון?

    nigunN י yossizY מוטי אורןמ 4 תגובות תגובה אחרונה
    1
    • nigunN מנותק
      nigunN מנותק
      nigun
      השיב לחוקר ב נערך לאחרונה על ידי
      #2

      @חוקר
      אכן אפשר לנסות לנחש ולשלוח מיליארדי טוקן מזוייפים
      אבל אפשר לעשות אותו דבר גם בטוקן רגיל.
      הקטע זה שלשלוח מיליארדי טוקנים זה יקר גם לתוקף
      וגם אתה יכול לחסום כתובת IP שיש ממנו אלפי כניסות שגויות

      מייל: nigun@duck.com

      ח תגובה 1 תגובה אחרונה
      3
      • י מנותק
        י מנותק
        יוסף בן שמעון
        השיב לחוקר ב נערך לאחרונה על ידי
        #3

        @חוקר אמר בJWT:

        הבנתי נכון?

        באמת כדאי להחליף טוקן מידי פעם

        ח תגובה 1 תגובה אחרונה
        1
        • ח מנותק
          ח מנותק
          חוקר
          השיב לnigun ב נערך לאחרונה על ידי
          #4

          @nigun אמר בJWT:

          אבל אפשר לעשות אותו דבר גם בטוקן רגיל.

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

          תגובה 1 תגובה אחרונה
          0
          • ח מנותק
            ח מנותק
            חוקר
            השיב ליוסף בן שמעון ב נערך לאחרונה על ידי
            #5

            @יוסף-בן-שמעון אמר בJWT:

            באמת כדאי להחליף טוקן מידי פעם

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

            תגובה 1 תגובה אחרונה
            0
            • yossizY מנותק
              yossizY מנותק
              yossiz
              השיב לחוקר ב נערך לאחרונה על ידי
              #6

              @חוקר אמר בJWT:

              הבנתי נכון?

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

              @יוסף-בן-שמעון אמר בJWT:

              באמת כדאי להחליף טוקן מידי פעם

              אני סקפטי

              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

              תגובה 1 תגובה אחרונה
              5
              • yossizY מנותק
                yossizY מנותק
                yossiz
                כתב ב נערך לאחרונה על ידי yossiz
                #7

                @חוקר
                ההמלצה היא שהסוד עבור אלגוריתם HS256 יהיה לפחות בגודל 256 ביטים (32 תווים). אחרת באמת יכול להיות שיהיה קל מדי לנחש טוקן

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                תגובה 1 תגובה אחרונה
                4
                • מוטי אורןמ מנותק
                  מוטי אורןמ מנותק
                  מוטי אורן
                  השיב לחוקר ב נערך לאחרונה על ידי
                  #8

                  @חוקר אני יכתוב את מה שאני הצלחתי להשיג בהבנתי הדלה בנושא הנ"ל של JWT.
                  הרעיון העיקרי של JWT הוא לאפשר מנגנון קומפקטי ככל הניתן לאימות משתמשים (אותנטיקציה) והרשאות (אותוריזציה).
                  דבר ראשון, JWT לא מיועד להעברה של נתונים סודיים על גביו (במימוש הרגיל שלו לכל הפחות), משום ששתי השדות הראשונים שלו (ה-Header וה-Payload) מקודדים בסך הכל ב base64 שניתן לפיענוח בקלות רבה.
                  כשהשרת מקבל בקשה מסויימת עם header כדלהלן (אני מדבר בשרת שתוכנת לפי הסטנדרט של JWT כמובן, כי השליחה יכולה להיעשות במגוון דרכים):

                  Authorization: Bearer <JWT Token>
                  

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

                  isAdmin: true
                  

                  השרת בודק את שדה ה-Payload, מוודא (באמצעות השדה השלישי ב-JWT) שאף גורם חיצוני לא טיפל בטוקן, רואה שמדובר בלקוח שהוא בדרגת מנהל, ולפי זה קובע את מרחב האפשרויות המותר לו.

                  בשביל הבדיקה הזאת שאף גורם זדוני לא שינה לעצמו את השדה isAdmin ל-true, נצרך אותו secret key. מה שהשרת עושה כשהוא חותם טוקן של JWT, הוא לוקח את אותו payload, ומעביר אותו דרך אלגוריתם מסויים שיוצר Hash שייחודי לקלט של אותו payload בצירוף של המפתח הסודי (מה שכמובן לא ניתן להוציא מהפלט), ומכניס אותו לטוקן בתור השדה השלישי (מה שמכונה 'שדה החתימה').

                  WWWW תגובה 1 תגובה אחרונה
                  9
                  • WWWW מנותק
                    WWWW מנותק
                    WWW
                    השיב למוטי אורן ב נערך לאחרונה על ידי
                    #9

                    @מוטי-אורן מה זה שונה מקובץ PDF לדוגמה שחתומה בחתימה דיגיטלית?

                    WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                    מוטי אורןמ תגובה 1 תגובה אחרונה
                    0
                    • מוטי אורןמ מנותק
                      מוטי אורןמ מנותק
                      מוטי אורן
                      השיב לWWW ב נערך לאחרונה על ידי מוטי אורן
                      #10

                      @www אמר בJWT:

                      @מוטי-אורן מה זה שונה מקובץ PDF לדוגמה שחתומה בחתימה דיגיטלית?

                      קודם כל זה באמת די דומה לדעתי...
                      העניין הוא בערך כזה (אני מדגיש מראש שאני כותב רק מה שידוע לי. יכול להיות מאוד שאני טועה).
                      קודם כל אני ינסה להסביר איך עובד המנגנון של חתימה דיגיטלית באופן כללי (כמו PDF בדוגמה שלנו), ואתה תראה לבד שזה די דומה.
                      הרעיון של חתימה דיגיטלית הוא כזה: אני לוקח את המידע שאני רוצה להפיץ, לצורך העניין את קובץ ה-PDF, מבצע הצפנה שלו באמצעות מפתח פרטי שנשאר אצלי, ואת המפתח הציבורי (היחיד) שפותח את ההצפנה שלו אני מפיץ לציבור (שימו לב כמה זה דומה להצפנה אסימטרית, רק הפוך בדיוק), ואני משרשר את התוצאה מיד לאחר המידע עצמו, וכמובן שאין שום דרך נורמלית לקבל את המפתח המצפין דרך המפתח המפענח.
                      כך שאם גורם כלשהו ירצה לוודא את האותנטיות של המידע, של קובץ ה-PDF, הוא ייקח את המפתח הציבורי שלי שידוע לכולם, ואם קרה וגורם נוסף שינה את המידע, הוא יראה מיד שהמידע לא מקורי.

                      הרעיון ב-JWT הוא דומה. כאן אנחנו לוקחים את התוצאה (מה שמכונה Hash), ומשרשרים אותה למידע עצמו.

                      עריכה: כעת נודע לי שההצפנה לא מתבצעת על המידע עצמו, אלא על ה-Hash שנוצר מהמידע, מטעמי חיסכון.

                      תגובה 1 תגובה אחרונה
                      7

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום