מדריך | איך לאבטח נכון את האתר שלכם בBase44?
-
מי שזוכר, בעבר פרסמתי פה פוסט שהסביר על פרצת אבטחה רצינית שיש באתרים שנבנים עם הפלטפורמה Base44.
הפרצה עדיין לא תוקנה, ולכן אני ממליץ לכל מי שיש לו אתר בBase44 עם מערכת משתמשים (מנהלים, יוזרים וכו') - לקרוא את ההסבר הבא בעיון:הפרצה עובדת על זיוף הרשאות משתמש בצד הלקוח, ולכן צריך לעשות אימות יותר חזק מסתם "למשתמש יש הרשאת מנהל".
צריך לעשות שחוץ מהפרמטר "מנהל", הגישה לניהול מתבצעת באמצעות אימות של כתובת המייל של המנהל.
כלומר צריך 2 תנאים כדי להחשיב משתמש כמנהל:
א. הוא רשום כמנהל.
ב. המייל של המשתמש תואם לרשימת כתובות המיילים של המנהלים.זה נכון לכל סוג של משתמש, למשל "עורך", "מנהל ראשי", "מפקח" או כל דבר אחר.
פרומפט אפשרי שאפשר לתת לסוכן של Base44:
אני צריך שתבצע תיקון אבטחה חשוב באתר שלי. יש באתר מערכת משתמשים עם הרשאות, למשל: מנהל, עורך, מנהל ראשי, מפקח או כל תפקיד אחר שקיים בפרויקט. הבעיה: כרגע אסור להסתמך רק על שדה/פרמטר בצד הלקוח כמו role, isAdmin, admin, userType וכדומה כדי לקבוע האם למשתמש יש הרשאות ניהול. הרשאות כאלה עלולות להיות מזויפות או משתנות בצד הלקוח. הדרישה: בכל מקום שבו האתר בודק האם למשתמש יש הרשאה מיוחדת, צריך לבצע אימות חזק יותר לפי שני תנאים יחד: 1. למשתמש יש את התפקיד המתאים במערכת, למשל admin / editor / supervisor וכו'. 2. כתובת המייל של המשתמש תואמת לרשימת כתובות מייל מאושרות מראש עבור אותו תפקיד. כלומר, משתמש ייחשב מנהל רק אם: - הוא מוגדר כמנהל במערכת - וגם המייל שלו נמצא ברשימת המיילים המאושרים של מנהלים אותו עיקרון צריך לחול גם על כל תפקיד אחר באתר: - עורך - מנהל ראשי - מפקח - כל תפקיד בעל הרשאות מיוחדות נא לבצע את זה בצורה הבאה: 1. ליצור רשימת מיילים מאושרת לכל תפקיד רגיש. לדוגמה: - ADMIN_EMAILS - SUPER_ADMIN_EMAILS - EDITOR_EMAILS - MODERATOR_EMAILS 2. בכל בדיקת הרשאה באתר, להחליף בדיקה פשוטה כמו: user.role === "admin" או: user.isAdmin === true בבדיקה כפולה: - האם למשתמש יש את התפקיד המתאים - האם user.email נמצא ברשימת המיילים המאושרים של אותו תפקיד 3. לוודא שהבדיקה לא נמצאת רק בתצוגה של הכפתורים או הדפים, אלא גם לפני כל פעולה רגישה בפועל: - כניסה לדף ניהול - צפייה במידע רגיש - יצירה, עריכה או מחיקה של נתונים - שינוי משתמשים - שינוי הרשאות - פרסום/אישור/מחיקה של תוכן - כל פעולה שמיועדת רק למנהלים או בעלי תפקידים 4. אם משתמש לא עומד בשני התנאים, יש לחסום את הפעולה ולהציג הודעה כללית: "אין לך הרשאה לבצע פעולה זו." 5. לא להציג למשתמשים רגילים פרטים פנימיים כמו רשימת המיילים המאושרים, שמות משתנים, או הסבר טכני על מנגנון ההרשאות. 6. לוודא שכל אזורי הניהול מוגנים גם ברמת הניווט/הראוטים וגם ברמת הפעולות עצמן, כדי שלא יהיה אפשר להגיע לפעולה רגישה דרך קישור ישיר או קריאה ידנית. 7. נא לעבור על כל הקוד בפרויקט ולמצוא את כל המקומות שבהם מתבצעת בדיקת הרשאות, ולאבטח את כולם לפי המנגנון הכפול הזה. 8. אחרי התיקון, נא להסביר לי בקצרה: - אילו קבצים שינית - אילו תפקידים קיימים במערכת - היכן נמצאות רשימות המיילים המאושרות - איך מוסיפים מנהל/עורך חדש בצורה בטוחה חשוב: המטרה היא שלא תהיה הסתמכות על הרשאה שמגיעה רק מהלקוח. כל תפקיד רגיש חייב להיבדק מול כתובת מייל מאושרת מראש בנוסף לשדה התפקיד.מקווה שעזרתי

-
א אברהם גלסר התייחס לנושא זה
-
א אברהם גלסר העביר נושא זה מ-מדריכים - מחשבים וטכנולוגיה
-
מי שזוכר, בעבר פרסמתי פה פוסט שהסביר על פרצת אבטחה רצינית שיש באתרים שנבנים עם הפלטפורמה Base44.
הפרצה עדיין לא תוקנה, ולכן אני ממליץ לכל מי שיש לו אתר בBase44 עם מערכת משתמשים (מנהלים, יוזרים וכו') - לקרוא את ההסבר הבא בעיון:הפרצה עובדת על זיוף הרשאות משתמש בצד הלקוח, ולכן צריך לעשות אימות יותר חזק מסתם "למשתמש יש הרשאת מנהל".
צריך לעשות שחוץ מהפרמטר "מנהל", הגישה לניהול מתבצעת באמצעות אימות של כתובת המייל של המנהל.
כלומר צריך 2 תנאים כדי להחשיב משתמש כמנהל:
א. הוא רשום כמנהל.
ב. המייל של המשתמש תואם לרשימת כתובות המיילים של המנהלים.זה נכון לכל סוג של משתמש, למשל "עורך", "מנהל ראשי", "מפקח" או כל דבר אחר.
פרומפט אפשרי שאפשר לתת לסוכן של Base44:
אני צריך שתבצע תיקון אבטחה חשוב באתר שלי. יש באתר מערכת משתמשים עם הרשאות, למשל: מנהל, עורך, מנהל ראשי, מפקח או כל תפקיד אחר שקיים בפרויקט. הבעיה: כרגע אסור להסתמך רק על שדה/פרמטר בצד הלקוח כמו role, isAdmin, admin, userType וכדומה כדי לקבוע האם למשתמש יש הרשאות ניהול. הרשאות כאלה עלולות להיות מזויפות או משתנות בצד הלקוח. הדרישה: בכל מקום שבו האתר בודק האם למשתמש יש הרשאה מיוחדת, צריך לבצע אימות חזק יותר לפי שני תנאים יחד: 1. למשתמש יש את התפקיד המתאים במערכת, למשל admin / editor / supervisor וכו'. 2. כתובת המייל של המשתמש תואמת לרשימת כתובות מייל מאושרות מראש עבור אותו תפקיד. כלומר, משתמש ייחשב מנהל רק אם: - הוא מוגדר כמנהל במערכת - וגם המייל שלו נמצא ברשימת המיילים המאושרים של מנהלים אותו עיקרון צריך לחול גם על כל תפקיד אחר באתר: - עורך - מנהל ראשי - מפקח - כל תפקיד בעל הרשאות מיוחדות נא לבצע את זה בצורה הבאה: 1. ליצור רשימת מיילים מאושרת לכל תפקיד רגיש. לדוגמה: - ADMIN_EMAILS - SUPER_ADMIN_EMAILS - EDITOR_EMAILS - MODERATOR_EMAILS 2. בכל בדיקת הרשאה באתר, להחליף בדיקה פשוטה כמו: user.role === "admin" או: user.isAdmin === true בבדיקה כפולה: - האם למשתמש יש את התפקיד המתאים - האם user.email נמצא ברשימת המיילים המאושרים של אותו תפקיד 3. לוודא שהבדיקה לא נמצאת רק בתצוגה של הכפתורים או הדפים, אלא גם לפני כל פעולה רגישה בפועל: - כניסה לדף ניהול - צפייה במידע רגיש - יצירה, עריכה או מחיקה של נתונים - שינוי משתמשים - שינוי הרשאות - פרסום/אישור/מחיקה של תוכן - כל פעולה שמיועדת רק למנהלים או בעלי תפקידים 4. אם משתמש לא עומד בשני התנאים, יש לחסום את הפעולה ולהציג הודעה כללית: "אין לך הרשאה לבצע פעולה זו." 5. לא להציג למשתמשים רגילים פרטים פנימיים כמו רשימת המיילים המאושרים, שמות משתנים, או הסבר טכני על מנגנון ההרשאות. 6. לוודא שכל אזורי הניהול מוגנים גם ברמת הניווט/הראוטים וגם ברמת הפעולות עצמן, כדי שלא יהיה אפשר להגיע לפעולה רגישה דרך קישור ישיר או קריאה ידנית. 7. נא לעבור על כל הקוד בפרויקט ולמצוא את כל המקומות שבהם מתבצעת בדיקת הרשאות, ולאבטח את כולם לפי המנגנון הכפול הזה. 8. אחרי התיקון, נא להסביר לי בקצרה: - אילו קבצים שינית - אילו תפקידים קיימים במערכת - היכן נמצאות רשימות המיילים המאושרות - איך מוסיפים מנהל/עורך חדש בצורה בטוחה חשוב: המטרה היא שלא תהיה הסתמכות על הרשאה שמגיעה רק מהלקוח. כל תפקיד רגיש חייב להיבדק מול כתובת מייל מאושרת מראש בנוסף לשדה התפקיד.מקווה שעזרתי

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