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

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

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

אימות משתמשים וממשק ניהול בנוד

מתוזמן נעוץ נעול הועבר תכנות
14 פוסטים 4 כותבים 313 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח חוקר

    @dovid
    ראשית תודה רבה על התגובה המפורטת והארוכה.!

    @dovid אמר באימות משתמשים וממשק ניהול בנוד:

    express-session.

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

    yossizY מנותק
    yossizY מנותק
    yossiz
    כתב ב נערך לאחרונה על ידי
    #4

    @חוקר זה רק בברירת מחדל, כי בלי הגדרה אחרת היא שומרת את הסשנים בזכרון. אתה אמור להגדיר בשבילו שמירה ב-DB.
    יש כאן רשימה של ספריות עזר:
    https://github.com/expressjs/session#compatible-session-stores

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

    dovidD תגובה 1 תגובה אחרונה
    4
    • yossizY yossiz

      @חוקר זה רק בברירת מחדל, כי בלי הגדרה אחרת היא שומרת את הסשנים בזכרון. אתה אמור להגדיר בשבילו שמירה ב-DB.
      יש כאן רשימה של ספריות עזר:
      https://github.com/expressjs/session#compatible-session-stores

      dovidD מנותק
      dovidD מנותק
      dovid
      ניהול
      כתב ב נערך לאחרונה על ידי dovid
      #5

      @חוקר אחת מעשרות האפשרויות שיש בלינק ש@yossiz הביא, זה שמירה בקבצים, השתמשתי בזה פעם:
      https://github.com/valery-barysok/session-file-store

      • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
      • בכל נושא אפשר ליצור קשר dovid@tchumim.com
      תגובה 1 תגובה אחרונה
      4
      • ח מנותק
        ח מנותק
        חוקר
        כתב ב נערך לאחרונה על ידי חוקר
        #6

        @dovid אמר באימות משתמשים וממשק ניהול בנוד:

        יש בעיה שלקוח "ינחש" שסנים אחרים

        אם אני מבין הספריה של express-session היא ס"ה להקל על הניהול של העוגיות, אבל בסופו של דבר בקטע האבטחה של ה"לנחש" עדיין אנו באותו מקום שהוא יוכל לזייף את העוגיה של express-session ואז הוא שוב מקבל הרשאת גישה.
        או שיש כאן מנגנון הצפנה טוב יותר?

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

        yossizY dovidD 2 תגובות תגובה אחרונה
        0
        • ח חוקר

          @dovid אמר באימות משתמשים וממשק ניהול בנוד:

          יש בעיה שלקוח "ינחש" שסנים אחרים

          אם אני מבין הספריה של express-session היא ס"ה להקל על הניהול של העוגיות, אבל בסופו של דבר בקטע האבטחה של ה"לנחש" עדיין אנו באותו מקום שהוא יוכל לזייף את העוגיה של express-session ואז הוא שוב מקבל הרשאת גישה.
          או שיש כאן מנגנון הצפנה טוב יותר?

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

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

          @חוקר יש הצפנה, express-session מקבלת כפרמטר secret שהוא מפתח ההצפנה:
          https://github.com/expressjs/session#secret

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

          ח תגובה 1 תגובה אחרונה
          3
          • yossizY yossiz

            @חוקר יש הצפנה, express-session מקבלת כפרמטר secret שהוא מפתח ההצפנה:
            https://github.com/expressjs/session#secret

            ח מנותק
            ח מנותק
            חוקר
            כתב ב נערך לאחרונה על ידי
            #8

            @yossiz אמר באימות משתמשים וממשק ניהול בנוד:

            @חוקר יש הצפנה, express-session מקבלת כפרמטר secret שהוא מפתח ההצפנה:

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

            yossizY תגובה 1 תגובה אחרונה
            1
            • ח חוקר

              @yossiz אמר באימות משתמשים וממשק ניהול בנוד:

              @חוקר יש הצפנה, express-session מקבלת כפרמטר secret שהוא מפתח ההצפנה:

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

              yossizY מנותק
              yossizY מנותק
              yossiz
              כתב ב נערך לאחרונה על ידי yossiz
              #9

              @חוקר לא הבנתי אותך לגמרי.
              א. מבחינתי אין שאלה בכלל האם להשתמש ב-node-session. ברור שכדאי להשתמש. לא רואה צד אחר.
              ב.

              האם עלי ליצור טוקן, או שמספיק לי מזהה הפעלה פנימי שמשייך לי אותו למשתמש הנכון?

              לא הבנתי את השאלה. node-session עושה עוגייה אחת אצל הלקוח, זה ה-sid (כלומר session id). ה-sid עצמו גם מוצפן. (למה? אני לא יודע, הרי אי אפשר לנחש sid של משתמש אחר, אולי כי ה-sid קצר אז אפשר לעשות מתקפת brute force). כל שאר ה-state שמשוייך לסשן נמצא ב-DB ו-node-session מצמיד אותו אוטומטי לאובייקט שאתה מקבל ב-req.session.
              כל שעליך לעשות הוא, אחרי שאתה מקבל ומאמת פרטי כניסה, אתה מוסיף לאובייקט הסשן:
              req.session.useId = xxx
              ואז בכל בקשה שחייב אימות אתה כותב משהו בסגנון של:

              const isAuthenticated = (req, res, next) => {
                  if (req.session.userId) {
                    return next();
                  }
                  return res.redirect('/login');
                }
              
              app.get('/profile', isAuthenticated, (req, res) => {
                // אתה מגיע לפה רק אם אתה מאומת
              })
              

              עבור logout אתה פשוט כותב:

              req.session.userId = null;
              

              כתבתי בקיצור, אם משהו לא מובן תשאל

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

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

              תגובה 1 תגובה אחרונה
              3
              • ח חוקר

                @dovid אמר באימות משתמשים וממשק ניהול בנוד:

                יש בעיה שלקוח "ינחש" שסנים אחרים

                אם אני מבין הספריה של express-session היא ס"ה להקל על הניהול של העוגיות, אבל בסופו של דבר בקטע האבטחה של ה"לנחש" עדיין אנו באותו מקום שהוא יוכל לזייף את העוגיה של express-session ואז הוא שוב מקבל הרשאת גישה.
                או שיש כאן מנגנון הצפנה טוב יותר?

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

                dovidD מנותק
                dovidD מנותק
                dovid
                ניהול
                כתב ב נערך לאחרונה על ידי
                #10

                @חוקר אמר באימות משתמשים וממשק ניהול בנוד:

                אם אני מבין הספריה של express-session היא ס"ה להקל על הניהול של העוגיות,

                לגמרי!

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

                בהחלט. ניחוש הוא גם דרך בטוחה לזכות בפייס... אתה קראת מה שכתבתי עם ה"קל לניחוש" מול ה"קשקוש"?

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

                אני אכן דיברתי על עוגיה רגילה. עוגיה רגילה זה מאובטח ומצויין...

                @חוקר אמר באימות משתמשים וממשק ניהול בנוד:

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

                ממש לא. גם אם אתה מממש לבד הכל בטוח וטוב (אם אתה עושה עם UUID כפי שאמרת בשאלה הפותחת + טבלה בצד שרת שמחזיקה UUID מול מזהה לקוח שלך - אחרי שהוא אימת את עצמו בשם וסיסמה). אתה מפסיד רק שאתה עובד קשה ופה ושם עושה פשלות ויש לך יותר קוד לתחזק.

                אם אני משתמש ב express-session, זה מצפין עבורי מראש את העוגיה. (האם עלי ליצור טוקן, או שמספיק לי מזהה הפעלה פנימי שמשייך לי אותו למשתמש הנכון?),

                יש פה אי הבנה. אני מקוה שמה ש@yossiz אמר הסביר לך מספיק, הספריה הזאת לא מתעסקת עם כלום. היא סה"כ דואגת שהאובייקט session שבrequest יישאר זהה לכל הבקשות מאותו משתמש בפרק זמן מוגדר. זהו.
                את הכניסה בשם וסיסמה ואת "זכירת" איזה משתמש והעדפות צריך לעשות איך שבא לך ולשמור את ה"עולה לדינא" באובייקט session, ובו לבדוק לפי הפעולה מה צריך.
                אני עייף אז אולי לא תבין אותי.

                • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                A תגובה 1 תגובה אחרונה
                3
                • dovidD dovid

                  @חוקר אמר באימות משתמשים וממשק ניהול בנוד:

                  אם אני מבין הספריה של express-session היא ס"ה להקל על הניהול של העוגיות,

                  לגמרי!

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

                  בהחלט. ניחוש הוא גם דרך בטוחה לזכות בפייס... אתה קראת מה שכתבתי עם ה"קל לניחוש" מול ה"קשקוש"?

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

                  אני אכן דיברתי על עוגיה רגילה. עוגיה רגילה זה מאובטח ומצויין...

                  @חוקר אמר באימות משתמשים וממשק ניהול בנוד:

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

                  ממש לא. גם אם אתה מממש לבד הכל בטוח וטוב (אם אתה עושה עם UUID כפי שאמרת בשאלה הפותחת + טבלה בצד שרת שמחזיקה UUID מול מזהה לקוח שלך - אחרי שהוא אימת את עצמו בשם וסיסמה). אתה מפסיד רק שאתה עובד קשה ופה ושם עושה פשלות ויש לך יותר קוד לתחזק.

                  אם אני משתמש ב express-session, זה מצפין עבורי מראש את העוגיה. (האם עלי ליצור טוקן, או שמספיק לי מזהה הפעלה פנימי שמשייך לי אותו למשתמש הנכון?),

                  יש פה אי הבנה. אני מקוה שמה ש@yossiz אמר הסביר לך מספיק, הספריה הזאת לא מתעסקת עם כלום. היא סה"כ דואגת שהאובייקט session שבrequest יישאר זהה לכל הבקשות מאותו משתמש בפרק זמן מוגדר. זהו.
                  את הכניסה בשם וסיסמה ואת "זכירת" איזה משתמש והעדפות צריך לעשות איך שבא לך ולשמור את ה"עולה לדינא" באובייקט session, ובו לבדוק לפי הפעולה מה צריך.
                  אני עייף אז אולי לא תבין אותי.

                  A מנותק
                  A מנותק
                  avi rz
                  כתב ב נערך לאחרונה על ידי avi rz
                  #11

                  @dovid אמר באימות משתמשים וממשק ניהול בנוד:

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

                  את השמירה של העוגייה בצד לקוח, גם צריך לעשות,
                  או שזה כן נהיה לבד, וכל מה שצריך לעשות זה רק בשביל לדעת איך לנווט את המשתמש אחרי שזוהה?

                  נ.ב. כמובן חוץ ממה שאמר @yossiz, שכשמקבלים session ריק - בלי user_Id אז צריך להכניס לו user_Id לפי השם משתמש והסיסמא - אם הם נכונים כמובן.

                  dovidD תגובה 1 תגובה אחרונה
                  0
                  • A avi rz

                    @dovid אמר באימות משתמשים וממשק ניהול בנוד:

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

                    את השמירה של העוגייה בצד לקוח, גם צריך לעשות,
                    או שזה כן נהיה לבד, וכל מה שצריך לעשות זה רק בשביל לדעת איך לנווט את המשתמש אחרי שזוהה?

                    נ.ב. כמובן חוץ ממה שאמר @yossiz, שכשמקבלים session ריק - בלי user_Id אז צריך להכניס לו user_Id לפי השם משתמש והסיסמא - אם הם נכונים כמובן.

                    dovidD מנותק
                    dovidD מנותק
                    dovid
                    ניהול
                    כתב ב נערך לאחרונה על ידי
                    #12

                    @avi-rz כל הטיפול בעוגיה הוא עושה.

                    • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                    • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                    תגובה 1 תגובה אחרונה
                    2
                    • A מנותק
                      A מנותק
                      avi rz
                      כתב ב נערך לאחרונה על ידי avi rz
                      #13

                      בעצם ה exspress-session הוא רק למשתמש יחיד?
                      כלומר אם שני אנשים עובדים מאותו מחשב, כל פעם שיחליפו, יצטרכו להכניס שם משתמש וסיסמא?
                      למשל אני עשיתי לבד כזה דבר,
                      כך נראית רשימת החיבורים, כמובן אם אופציה לניתוק החיבור בנפרד או מחיקת השם משתמש.
                      Inkedרשימת חיבורים קיימים_LI.jpg
                      כך זה נשמר בדפדפן,
                      מאוחסן בדפדפן.PNG

                      השאלה אם אני יוכל לעשות את אותו רעיון גם בספרייה הנ"ל.

                      dovidD תגובה 1 תגובה אחרונה
                      0
                      • A avi rz

                        בעצם ה exspress-session הוא רק למשתמש יחיד?
                        כלומר אם שני אנשים עובדים מאותו מחשב, כל פעם שיחליפו, יצטרכו להכניס שם משתמש וסיסמא?
                        למשל אני עשיתי לבד כזה דבר,
                        כך נראית רשימת החיבורים, כמובן אם אופציה לניתוק החיבור בנפרד או מחיקת השם משתמש.
                        Inkedרשימת חיבורים קיימים_LI.jpg
                        כך זה נשמר בדפדפן,
                        מאוחסן בדפדפן.PNG

                        השאלה אם אני יוכל לעשות את אותו רעיון גם בספרייה הנ"ל.

                        dovidD מנותק
                        dovidD מנותק
                        dovid
                        ניהול
                        כתב ב נערך לאחרונה על ידי
                        #14

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

                        • מנטור אישי בתכנות והמסתעף – להתקדם לשלב הבא!
                        • בכל נושא אפשר ליצור קשר dovid@tchumim.com
                        תגובה 1 תגובה אחרונה
                        4
                        תגובה
                        • תגובה כנושא
                        התחברו כדי לפרסם תגובה
                        • מהישן לחדש
                        • מהחדש לישן
                        • הכי הרבה הצבעות


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

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

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