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

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

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

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

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

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

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

    dovidD תגובה 1 תגובה אחרונה
    4
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לyossiz ב נערך לאחרונה על ידי 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
        • yossizY מנותק
          yossizY מנותק
          yossiz
          השיב לחוקר ב נערך לאחרונה על ידי
          #7

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

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

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

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

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

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

            yossizY תגובה 1 תגובה אחרונה
            1
            • 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
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                השיב לחוקר ב נערך לאחרונה על ידי
                #10

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

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

                לגמרי!

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

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

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

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

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

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

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

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

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

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                A תגובה 1 תגובה אחרונה
                3
                • A מנותק
                  A מנותק
                  avi rz
                  השיב לdovid ב נערך לאחרונה על ידי avi rz
                  #11

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

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

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

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

                  dovidD תגובה 1 תגובה אחרונה
                  0
                  • dovidD מנותק
                    dovidD מנותק
                    dovid ניהול
                    השיב לavi rz ב נערך לאחרונה על ידי
                    #12

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

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    2
                    • A מנותק
                      A מנותק
                      avi rz
                      כתב ב נערך לאחרונה על ידי avi rz
                      #13

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

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

                      dovidD תגובה 1 תגובה אחרונה
                      0
                      • dovidD מנותק
                        dovidD מנותק
                        dovid ניהול
                        השיב לavi rz ב נערך לאחרונה על ידי
                        #14

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

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

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

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

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