$ מציג 141 מתוך 141 מונחים
משטח תקיפה — Attack Surface
Attack Surface
- מה זה
- כל המקומות שדרכם משתמש, שירות חיצוני או תוקף פוטנציאלי יכולים לתקשר עם המערכת או להשפיע עליה.
- למה זה חשוב
- באתרי Lovable/AI המשטח גדל מהר: טפסים, Login, Supabase, קבצים, דומיין, API ו-Webhooks יכולים להיווצר בלי שבונה האתר שם לב.
- דוגמה
- פורטל עם טופס, אזור אישי, מסמכים ו-Admin Panel כולל יותר נקודות בדיקה מדף נחיתה פשוט.
- מה לבדוק / איך למנוע
- ממפים את כל הכניסות למערכת: עמודים, טפסים, API, Storage, משתמשים, Roles וחיבורים חיצוניים.
חזית האתר — Frontend
Frontend
- מה זה
- החלק שרץ בדפדפן של המשתמש: מסכים, JavaScript, רכיבי UI, בקשות Network וקוד צד לקוח.
- למה זה חשוב
- כל מה שמגיע ל-Frontend נחשב גלוי למשתמש מבחינת אבטחה, גם אם לא מוצג בעיצוב.
- דוגמה
- מידע שמוחזר ב-Network Response אבל מוסתר מהמסך עדיין נחשב חשוף.
- מה לבדוק / איך למנוע
- פותחים DevTools ובודקים Console, Network, Local Storage ו-Cookies כדי לראות מה באמת מגיע לדפדפן.
צד שרת — Backend
Backend
- מה זה
- הלוגיקה שרצה בצד שרת, API, Edge Function או שירות backend, ולא בדפדפן של המשתמש.
- למה זה חשוב
- החלטות רגישות כמו הרשאות, פעולות אדמין וגישה לדאטה צריכות להיאכף בצד שרת או DB, לא רק במסך.
- דוגמה
- כפתור “מחק משתמש” יכול להיות מוסתר ב-UI, אבל ה-Backend חייב לחסום פעולה כזו למי שאינו אדמין.
- מה לבדוק / איך למנוע
- בודקים שהפעולה עצמה חסומה, לא רק שהכפתור אינו מופיע.
ממשק תכנות יישומים — API
API = Application Programming Interface
- מה זה
- דרך מוסדרת שבה האתר מדבר עם שרת, Supabase או שירותים חיצוניים באמצעות בקשות ותשובות.
- למה זה חשוב
- רבות מהחולשות לא נראות בעיצוב האתר אלא בבקשות API ובמידע שחוזר מהשרת.
- דוגמה
- האתר מציג רק 3 שדות במסך, אבל Response של ה-API מחזיר גם אימייל, role ו-user_id של משתמשים אחרים.
- מה לבדוק / איך למנוע
- בודקים Network/Fetch/XHR ורואים אילו Endpoints נקראים ומה חוזר מהם.
נקודת קצה — Endpoint
Endpoint
- מה זה
- כתובת או פעולה ספציפית ב-API שמחזירה מידע או מבצעת פעולה.
- למה זה חשוב
- כל Endpoint הוא נקודת בדיקה אפשרית: האם צריך Login? האם נבדקת הרשאה? האם הוא מחזיר יותר מדי מידע?
- דוגמה
- /api/requests מחזיר רשימת בקשות; /api/admin/users אמור להיות נגיש רק לאדמין.
- מה לבדוק / איך למנוע
- עוברים על ה-Endpoints שנראים ב-Network ומסמנים ציבורי/פרטי/אדמין.
בקשה — Request
Request
- מה זה
- המידע שהדפדפן או כלי בדיקה שולחים לשרת או ל-API.
- למה זה חשוב
- בקשה יכולה לכלול מזהה משתמש, מזהה בקשה, headers, token, body ועוד. לפעמים שם רואים על מה האפליקציה סומכת.
- דוגמה
- בקשה לעדכון פרופיל מכילה owner_user_id שנשלח מהדפדפן; זה עלול להיות סימן לסיכון אם השרת סומך עליו.
- מה לבדוק / איך למנוע
- מנתחים בקשות ב-DevTools או בכלי API ומוודאים שהשרת לא סומך על ערכים רגישים מהלקוח בלבד.
תשובה — Response
Response
- מה זה
- המידע שהשרת מחזיר לדפדפן אחרי בקשה.
- למה זה חשוב
- חשיפות רבות קורות כי ה-Response מחזיר מידע פנימי או מידע של משתמשים אחרים גם אם המסך לא מציג אותו.
- דוגמה
- טופס יצירת קשר מחזיר debug_token, role ו-internal_id למשתמש.
- מה לבדוק / איך למנוע
- בודקים Response Preview/Response ב-Network ומוודאים שחוזר רק מידע שהמשתמש באמת צריך לראות.
קוד סטטוס — Status Code
HTTP Status Code
- מה זה
- מספר שמייצג את תוצאת הבקשה: הצלחה, חוסר הרשאה, שגיאה וכו׳.
- למה זה חשוב
- קוד סטטוס עוזר להבין אם מערכת באמת חוסמת גישה או רק מציגה מסך יפה.
- דוגמה
- 200 = הצליח; 401 = לא מחובר; 403 = אין הרשאה; 404 = לא נמצא; 500 = שגיאת שרת.
- מה לבדוק / איך למנוע
- כשמשתמש לא מורשה ניגש למשאב פרטי, מצפים לחסימה ברורה כמו 403 או התנהגות שקולה — לא 200 עם מידע רגיש.
אכיפה בצד לקוח — Client-Side Enforcement
Client-Side Enforcement
- מה זה
- הגנה שמתרחשת רק בדפדפן: הסתרת כפתור, תפריט, route או תנאי JavaScript.
- למה זה חשוב
- זו שכבת UX, לא אבטחה מלאה. משתמש מתקדם או שגיאת לוגיקה יכולים לעקוף אותה.
- דוגמה
- המערכת לא מציגה כפתור Admin למשתמש רגיל, אבל URL ישיר עדיין נפתח.
- מה לבדוק / איך למנוע
- לא מסתפקים בבדיקת UI. בודקים ישירות שהמידע/פעולה חסומים בצד שרת או בסיס נתונים.
אכיפה בצד שרת — Server-Side Enforcement
Server-Side Enforcement
- מה זה
- הגנה שנאכפת בשרת, API, Edge Function או בסיס הנתונים לפני שמידע חוזר למשתמש.
- למה זה חשוב
- זו ההגנה החשובה באמת עבור הרשאות ודאטה רגיש.
- דוגמה
- ה-API בודק שה-request.owner_user_id שווה למשתמש המחובר לפני החזרת פרטי הבקשה.
- מה לבדוק / איך למנוע
- מנסים פעולה/גישה כמשתמש לא מורשה ומוודאים שהשרת לא מחזיר את המידע.
אימות זהות — Authentication (AuthN)
AuthN = Authentication
- מה זה
- בדיקה מי המשתמש: האם הוא מחובר, מי הוא, ומה הזהות שלו במערכת.
- למה זה חשוב
- Login הוא תנאי בסיסי, אבל הוא לא מספיק. אחרי שיודעים מי המשתמש צריך לבדוק מה מותר לו לעשות.
- דוגמה
- דניאל התחבר בהצלחה למערכת.
- מה לבדוק / איך למנוע
- בודקים Login/Logout, session, Reset Password, והאם עמודים פרטיים דורשים משתמש מחובר.
הרשאה — Authorization (AuthZ)
AuthZ = Authorization
- מה זה
- בדיקה מה מותר למשתמש המחובר לראות או לבצע.
- למה זה חשוב
- זה הלב של הקורס: גם משתמש מחובר לא אמור לראות הכל.
- דוגמה
- דניאל מחובר, אבל אסור לו לראות בקשות של מאיה.
- מה לבדוק / איך למנוע
- בודקים עם שני משתמשים לפחות ומשווים איזה מידע כל אחד רואה.
סשן — Session
Session
- מה זה
- מצב התחברות מתמשך שמאפשר למערכת לזהות את המשתמש בין עמודים ובקשות.
- למה זה חשוב
- אם session מנוהל לא נכון, משתמש יכול להישאר מחובר מדי, להיחסם לא נכון, או לאבד הרשאות בצורה מסוכנת.
- דוגמה
- משתמש מתחבר פעם אחת ואז יכול לעבור בין Dashboard, מסמכים ופרופיל בלי להתחבר מחדש.
- מה לבדוק / איך למנוע
- בודקים Logout, פתיחה בחלון פרטי, שינוי role, והאם session מתנהג בצורה צפויה.
עוגייה — Cookie
HTTP Cookie
- מה זה
- פיסת מידע שהדפדפן שומר ושולח לאתר בבקשות עתידיות.
- למה זה חשוב
- Cookies משמשות הרבה פעמים ל-session ולכן צריך להגן עליהן באמצעות הגדרות מתאימות.
- דוגמה
- Cookie שמייצגת session של משתמש מחובר.
- מה לבדוק / איך למנוע
- בודקים ב-Application > Cookies אם קיימות הגדרות כמו HttpOnly, Secure ו-SameSite כאשר רלוונטי.
אחסון מקומי — Local Storage
Local Storage
- מה זה
- אזור אחסון בדפדפן שבו האתר יכול לשמור נתונים בצד לקוח.
- למה זה חשוב
- כל מה שנשמר שם גלוי למשתמש בדפדפן. לא שמים שם secrets או מידע רגיש שלא צריך להיות נגיש.
- דוגמה
- שמירת token רגיש או מידע פרטי מלא ב-Local Storage עלולה להיות בעייתית.
- מה לבדוק / איך למנוע
- פותחים DevTools > Application > Local Storage ובודקים שאין שם secrets או מידע מיותר.
טוקן — Token
Security Token
- מה זה
- ערך שמייצג זהות, הרשאה או גישה זמנית לשירות.
- למה זה חשוב
- Tokens יכולים לתת גישה לפעולות או מידע. צריך להבין איפה הם נשמרים ומה היקף ההרשאה שלהם.
- דוגמה
- Access token שמאפשר לקרוא API בשם המשתמש.
- מה לבדוק / איך למנוע
- לא משתפים tokens, לא מדביקים אותם בצ׳אט, ובודקים שהם לא מודפסים ל-Console או ל-Response.
טוקן JWT
JWT = JSON Web Token
- מה זה
- פורמט נפוץ לטוקן שיכול להכיל Claims על המשתמש, כמו מזהה, תפקיד וזמן תפוגה.
- למה זה חשוב
- JWT עוזר להבין מי המשתמש, אבל אסור לסמוך על מידע מהדפדפן בלי אימות ואכיפה בצד שרת/DB.
- דוגמה
- JWT עשוי להכיל user_id או role.
- מה לבדוק / איך למנוע
- בודקים שהמערכת לא מאפשרת למשתמש לקבוע לעצמו role או user_id דרך הלקוח.
תפקיד משתמש — Role
Role
- מה זה
- סיווג המשתמש לפי הרשאות או אחריות במערכת.
- למה זה חשוב
- בפורטל Lovable מורכב, טעות ב-Role יכולה לפתוח אזורי ניהול או דאטה רגיש למשתמשים לא נכונים.
- דוגמה
- User, Provider, Manager, Admin.
- מה לבדוק / איך למנוע
- מגדירים טבלת הרשאות ברורה לכל Role ובודקים אותה בפועל עם משתמשי דמו.
בקרת גישה לפי תפקידים — RBAC
RBAC = Role-Based Access Control
- מה זה
- מודל שבו הרשאות נקבעות לפי תפקיד המשתמש.
- למה זה חשוב
- עוזר לעשות סדר באפליקציות עם User, Manager ו-Admin, אבל חייב להיות נאכף בפועל.
- דוגמה
- Manager יכול לראות פניות, Admin יכול לנהל משתמשים, User רואה רק את עצמו.
- מה לבדוק / איך למנוע
- בודקים שכל Role באמת מקבל רק את הפעולות והמידע שהוגדרו לו.
עיקרון ההרשאה המינימלית — Least Privilege
Principle of Least Privilege
- מה זה
- כל משתמש, שירות או מפתח מקבל רק את ההרשאות הנדרשות לו — לא יותר.
- למה זה חשוב
- מפחית נזק במקרה של טעות, פריצה או חשיפת key.
- דוגמה
- נציג שירות לא צריך לראות את כל הטבלאות או לשנות הרשאות אדמין.
- מה לבדוק / איך למנוע
- בכל Role וכל API key שואלים: האם ההרשאה הזו באמת נחוצה?
בקרת גישה שבורה — Broken Access Control
Broken Access Control
- מה זה
- מצב שבו משתמש מצליח לגשת למידע או לבצע פעולה שלא אמורים להיות זמינים לו.
- למה זה חשוב
- זה אחד הסיכונים המרכזיים באפליקציות עם משתמשים, ובמיוחד באפליקציות שנבנו מהר עם AI.
- דוגמה
- משתמש רגיל רואה מסמך של משתמש אחר או נכנס למסך ניהול.
- מה לבדוק / איך למנוע
- בודקים עם כמה משתמשים ו-Roles, ומוודאים שהחסימה נאכפת בצד שרת/DB.
גישה ישירה לא מאובטחת לאובייקט — IDOR
IDOR = Insecure Direct Object Reference
- מה זה
- חולשה שבה משתמש ניגש למשאב לפי מזהה ישיר, והמערכת לא בודקת שהמשאב שייך לו.
- למה זה חשוב
- נפוצה מאוד בפורטלים עם URLs כמו /requests/1001. סורקים אוטומטיים לא תמיד מזהים אותה כי היא תלויה בלוגיקה העסקית.
- דוגמה
- דניאל נכנס ל-/requests/REQ-2001 ורואה בקשה של מאיה.
- מה לבדוק / איך למנוע
- בודקים משאבים עם משתמש א׳ ומשתמש ב׳. תיקון עקרוני: בדיקת ownership בצד שרת/RLS.
הרשאה שבורה ברמת אובייקט — BOLA
BOLA = Broken Object Level Authorization
- מה זה
- גרסה נפוצה בעולם API לבעיה שבה API מחזיר אובייקט לפי מזהה בלי לבדוק הרשאת גישה לאותו אובייקט.
- למה זה חשוב
- חשוב במיוחד ל-API, Supabase ו-Edge Functions.
- דוגמה
- GET /api/requests/REQ-2001 מחזיר מידע של מאיה למשתמש דניאל.
- מה לבדוק / איך למנוע
- לכל קריאת API שמחזירה אובייקט בודקים: האם המשתמש המחובר מורשה לאובייקט הזה?
הרשאה שבורה ברמת פעולה — BFLA
BFLA = Broken Function Level Authorization
- מה זה
- מצב שבו משתמש יכול לבצע פעולה או לגשת לפונקציה שלא מתאימה לתפקיד שלו.
- למה זה חשוב
- גם אם דאטה פרטי לא נחשף, פעולה רגישה כמו שינוי סטטוס או מחיקה יכולה להיות מסוכנת.
- דוגמה
- משתמש רגיל מצליח לקרוא לפעולת admin/update-user-role.
- מה לבדוק / איך למנוע
- בודקים פעולות לפי Role: מי יכול ליצור, לעדכן, למחוק, לאשר, לשנות סטטוס ולנהל משתמשים.
בדיקת בעלות — Ownership Check
Ownership Check
- מה זה
- בדיקה שהמשאב המבוקש באמת שייך למשתמש המחובר או שהוא מורשה אליו.
- למה זה חשוב
- זו ההגנה המרכזית נגד IDOR/BOLA.
- דוגמה
- לפני החזרת בקשה, בודקים ש-owner_user_id תואם ל-user_id של המשתמש המחובר.
- מה לבדוק / איך למנוע
- בכל עמוד Details או API by ID מוודאים שקיימת בדיקת ownership.
ריבוי לקוחות במערכת אחת — Multi-Tenancy
Multi-Tenancy
- מה זה
- מצב שבו אותה מערכת משרתת כמה לקוחות, ארגונים או חשבונות נפרדים.
- למה זה חשוב
- טעות בהפרדה בין tenants עלולה לחשוף מידע של לקוח אחד ללקוח אחר.
- דוגמה
- סוכנות אחת רואה לידים של סוכנות אחרת באותו פורטל.
- מה לבדוק / איך למנוע
- מוסיפים tenant_id/organization_id ובודקים בידוד דאטה בכל שאילתה, policy ו-API.
בידוד דיירים/ארגונים — Tenant Isolation
Tenant Isolation
- מה זה
- הפרדה שמבטיחה שמשתמשים מארגון אחד לא יכולים לראות או לשנות מידע של ארגון אחר.
- למה זה חשוב
- במערכות B2B זה קריטי לא פחות מהרשאות user_id.
- דוגמה
- Manager של חברה א׳ לא אמור לראות מסמכים של חברה ב׳.
- מה לבדוק / איך למנוע
- בודקים לפחות שני ארגונים נפרדים עם משתמשים שונים ומוודאים שאין זליגה ביניהם.
לוגיקה עסקית — Business Logic
Business Logic
- מה זה
- החוקים העסקיים של האפליקציה: מי רשאי לעשות מה, באיזה מצב, ובאיזה סדר.
- למה זה חשוב
- סריקות אבטחה טכניות לא תמיד מבינות את החוקים האלה ולכן עלולות לפספס חולשות.
- דוגמה
- רק Manager יכול לאשר בקשה מעל סכום מסוים, אבל משתמש רגיל מצליח לשנות סטטוס ידנית.
- מה לבדוק / איך למנוע
- מגדירים Abuse Cases ובודקים זרימות עסקיות רגישות עם Roles שונים.
מקרה ניצול לרעה — Abuse Case
Abuse Case
- מה זה
- תרחיש שבו משתמש מנצל יכולת קיימת במערכת בצורה שלא התכוונו אליה.
- למה זה חשוב
- עוזר לחשוב כמו בודק אבטחה בלי להיכנס להוראות תקיפה מסוכנות.
- דוגמה
- משתמש שולח טופס שוב ושוב, או מנסה לראות בקשות של אחרים דרך מזהים.
- מה לבדוק / איך למנוע
- כותבים לכל פיצ׳ר: מה שימוש תקין, ומה שימוש לרעה שצריך לחסום.
מודל איומים — Threat Modeling
Threat Modeling
- מה זה
- תהליך חשיבה מסודר שממפה נכסים, משתמשים, איומים, נקודות כניסה והגנות.
- למה זה חשוב
- באתרי AI זה מאפשר לעצור רגע לפני פרודקשן ולהבין מה באמת צריך לבדוק.
- דוגמה
- מיפוי: יש מסמכים פרטיים, API, משתמשים, אדמין ו-Supabase — לכן צריך בדיקות הרשאה ו-Storage.
- מה לבדוק / איך למנוע
- מכינים טבלת נכסים, משתמשים, תרחישי סיכון ובדיקות נדרשות.
31Supabase, Lovable ונתונים
אימות משתמשים ב — Supabase Auth
Supabase Authentication
- מה זה
- שירות האימות של Supabase לניהול הרשמה, התחברות, סשנים ומשתמשים.
- למה זה חשוב
- Lovable משתמשת לעיתים ב-Supabase Auth, אבל Login בלבד לא מגן על הטבלאות ללא RLS/Policies.
- דוגמה
- משתמש מחובר דרך Supabase Auth אך טבלת requests פתוחה מדי.
- מה לבדוק / איך למנוע
- בודקים Auth Redirect URLs, משתמשי בדיקה, sessions והאם הרשאות הטבלאות מתבססות על המשתמש המחובר.
32Supabase, Lovable ונתונים
אבטחה ברמת שורה — RLS
RLS = Row Level Security
- מה זה
- מנגנון שמאפשר לבסיס הנתונים להחזיר או לשנות רק שורות שהמשתמש מורשה אליהן.
- למה זה חשוב
- זה אחד הכלים הכי חשובים למניעת חשיפת מידע בין משתמשים ב-Supabase.
- דוגמה
- דניאל מקבל רק rows שבהן owner_user_id = user_a.
- מה לבדוק / איך למנוע
- מוודאים ש-RLS פעיל בטבלאות רגישות ושקיימות policies מתאימות ל-SELECT/INSERT/UPDATE/DELETE.
33Supabase, Lovable ונתונים
מדיניות הרשאה — Policy
Database/RLS Policy
- מה זה
- כלל שמגדיר מי יכול לקרוא, ליצור, לעדכן או למחוק מידע בטבלה.
- למה זה חשוב
- Policy רחבה מדי יכולה להפוך טבלה פרטית לציבורית בפועל.
- דוגמה
- User can read own requests; Admin can read all requests.
- מה לבדוק / איך למנוע
- קוראים policies ומתרגמים אותן לעברית פשוטה: מי רשאי לעשות מה ובאיזה תנאי.
34Supabase, Lovable ונתונים
טבלה ציבורית — Public Table
Public Table
- מה זה
- טבלה שמכילה מידע שמותר להיות נגיש לציבור או למשתמשים רבים.
- למה זה חשוב
- לא כל טבלה צריכה להיות פרטית, אבל צריך להחליט במודע ולא בטעות.
- דוגמה
- טבלת articles או public_pages.
- מה לבדוק / איך למנוע
- מסמנים טבלאות ציבוריות ומוודאים שאין בהן מידע אישי, פנימי או רגיש.
35Supabase, Lovable ונתונים
טבלה פרטית — Private Table
Private Table
- מה זה
- טבלה שמכילה מידע שאמור להיות מוגן לפי משתמש, Role או ארגון.
- למה זה חשוב
- רוב הטבלאות בפורטל לקוחות הן פרטיות ודורשות RLS.
- דוגמה
- profiles, documents, messages, requests, orders, leads.
- מה לבדוק / איך למנוע
- לכל טבלה פרטית בודקים RLS, policies, ownership ו-Role access.
36Supabase, Lovable ונתונים
מפתח אנונימי — Anon Key
Supabase Anonymous Key
- מה זה
- מפתח ציבורי יחסית שמשמש את ה-Frontend כדי לתקשר עם Supabase תחת מגבלות RLS.
- למה זה חשוב
- הוא יכול להופיע בצד לקוח, אבל לא אמור לאפשר גישה חופשית לדאטה. ההגנה האמיתית היא RLS.
- דוגמה
- האפליקציה משתמשת ב-anon key לקריאת נתונים ציבוריים או נתונים מורשים.
- מה לבדוק / איך למנוע
- בודקים שלא משתמשים ב-anon key כתחליף להרשאות וש-RLS אכן מגביל גישה.
37Supabase, Lovable ונתונים
מפתח תפקיד שירות — Service Role Key
Supabase Service Role Key
- מה זה
- מפתח רגיש מאוד של Supabase שמסוגל לעקוף RLS ולבצע פעולות חזקות.
- למה זה חשוב
- אסור שיופיע בצד לקוח. חשיפה שלו יכולה לאפשר גישה רחבה מאוד לדאטה.
- דוגמה
- service_role key שמופיע בקוד frontend, ב-Console או ב-repository ציבורי.
- מה לבדוק / איך למנוע
- אם נחשף: מחליפים key, בודקים שימושים, מעבירים לצד שרת/Environment Variables ומבצעים review.
38Supabase, Lovable ונתונים
אחסון קבצים — Storage Bucket
Storage Bucket
- מה זה
- אזור אחסון לקבצים כמו תמונות, מסמכים, חוזים וקבצי משתמשים.
- למה זה חשוב
- קבצים הם מקור נפוץ לחשיפת מידע, במיוחד אם bucket ציבורי בטעות.
- דוגמה
- מסמך זהות דמו מאוחסן ב-bucket שנגיש לכל מי שמכיר URL.
- מה לבדוק / איך למנוע
- ממפים buckets, public/private, סוגי קבצים, וכללי גישה.
39Supabase, Lovable ונתונים
Bucket ציבורי — Public Bucket
Public Storage Bucket
- מה זה
- אזור קבצים שניתן לגשת לקבצים בו ללא הרשאה פרטנית.
- למה זה חשוב
- מתאים לתמונות ציבוריות, לא למסמכים פרטיים.
- דוגמה
- תמונות בלוג ציבוריות.
- מה לבדוק / איך למנוע
- מוודאים ש-public bucket לא מכיל מסמכי לקוחות, קבצים פנימיים או מידע אישי.
40Supabase, Lovable ונתונים
Bucket פרטי — Private Bucket
Private Storage Bucket
- מה זה
- אזור קבצים שנגיש רק לפי הרשאות.
- למה זה חשוב
- נדרש למסמכים אישיים, קבצי לקוחות, חוזים ותוכן רגיש.
- דוגמה
- משתמש רואה רק קבצים שלו דרך policy או signed URL.
- מה לבדוק / איך למנוע
- בודקים קובץ של משתמש א׳ מתוך משתמש ב׳ ומוודאים שהגישה נחסמת.
41Supabase, Lovable ונתונים
קישור חתום — Signed URL
Signed URL
- מה זה
- קישור זמני ומוגבל לקובץ פרטי.
- למה זה חשוב
- מאפשר לתת גישה לקובץ בלי להפוך את כל ה-bucket לציבורי.
- דוגמה
- קישור למסמך תקף ל-10 דקות למשתמש מורשה.
- מה לבדוק / איך למנוע
- בודקים שהקישור מוגבל בזמן, לא נוצר למי שאינו מורשה, ולא נשמר במקומות ציבוריים.
42Supabase, Lovable ונתונים
פונקציית קצה — Edge Function
Edge Function
- מה זה
- פונקציה שרצה בצד שרת/Edge ומבצעת לוגיקה או תקשורת עם שירותים חיצוניים.
- למה זה חשוב
- מקום נכון לשים פעולות רגישות, אבל חייב לכלול בדיקת auth/authorization.
- דוגמה
- Edge Function ששולחת אימייל או מעדכנת סטטוס בקשה.
- מה לבדוק / איך למנוע
- בודקים שהיא דורשת משתמש/Role מתאים ולא מחזירה מידע פנימי מיותר.
43Supabase, Lovable ונתונים
משתני סביבה — Environment Variables (ENV)
ENV = Environment Variables
- מה זה
- הגדרות ומפתחות שנשמרים מחוץ לקוד, לפי סביבת הרצה.
- למה זה חשוב
- עוזרים להפריד secrets מהקוד ולנהל Preview/Production בצורה בטוחה.
- דוגמה
- SUPABASE_URL, SUPABASE_ANON_KEY, STRIPE_SECRET_KEY.
- מה לבדוק / איך למנוע
- מוודאים שמפתחות רגישים נמצאים רק בסביבת שרת/Platform ולא בקוד צד לקוח.
44Supabase, Lovable ונתונים
Webhook
Webhook
- מה זה
- קריאה אוטומטית משירות חיצוני לאפליקציה כאשר קורה אירוע.
- למה זה חשוב
- Webhook לא מאומת יכול לאפשר עדכון מידע לא מורשה או קבלת אירועים מזויפים.
- דוגמה
- שירות תשלומים שולח הודעה שהעסקה הצליחה.
- מה לבדוק / איך למנוע
- בודקים חתימה/secret של webhook, ולוגיקה שמוודאת שהאירוע אמיתי ורלוונטי.
OWASP Top 10
OWASP = Open Worldwide Application Security Project Top 10
- מה זה
- רשימת סיכוני אבטחת Web מרכזיים שמפורסמת על ידי OWASP ומשמשת כנקודת ייחוס מקצועית.
- למה זה חשוב
- נותנת שפה מקצועית לקורס ומחברת בעיות כמו Broken Access Control, Injection ו-Security Misconfiguration לעולם מוכר.
- דוגמה
- Broken Access Control הוא אחד הסיכונים המרכזיים ברשימה.
- מה לבדוק / איך למנוע
- משתמשים ברשימה כמפה, אבל מתמקדים במה שרלוונטי לאתרי AI ו-Lovable.
הזרקה — Injection
Injection
- מה זה
- מצב שבו קלט משתמש משפיע בצורה לא בטוחה על שאילתה, פקודה, Prompt או פעולה פנימית.
- למה זה חשוב
- כל מקום שבו משתמש מזין טקסט או קובץ הוא נקודת בדיקה.
- דוגמה
- טופס שמכניס קלט ישירות לשאילתה או ל-Prompt ללא בקרה מתאימה.
- מה לבדוק / איך למנוע
- משתמשים ב-validation, sanitization, ספריות בטוחות, הרשאות מוגבלות ובדיקות קלט. לא מדגימים ניצול לא מורשה.
הזרקת - SQL Injection - SQLi
SQLi = Structured Query Language Injection
- מה זה
- סוג של Injection שבו קלט משפיע על שאילתת SQL בצורה שעלולה לחשוף או לשנות מידע.
- למה זה חשוב
- פחות נפוץ אם עובדים נכון עם Supabase/ORM, אבל חשוב להכיר כשיש שאילתות ידניות.
- דוגמה
- קלט מטופס נכנס לשאילתת SQL ללא פרמטרים בטוחים.
- מה לבדוק / איך למנוע
- משתמשים בשאילתות פרמטריות, APIs בטוחים ו-RLS; לא בונים SQL מקלט גולמי.
הזרקת פקודות — Command Injection
Command Injection
- מה זה
- מצב שבו קלט משתמש מגיע לפקודת מערכת או סקריפט בצורה לא בטוחה.
- למה זה חשוב
- רלוונטי יותר כשאפליקציה מפעילה פעולות שרת, קבצים או סקריפטים.
- דוגמה
- שדה קלט שמשפיע על פקודת מערכת בצד שרת.
- מה לבדוק / איך למנוע
- לא מעבירים קלט גולמי לפקודות, מגבילים הרשאות, ומעדיפים APIs בטוחים.
הזרקת — Prompt Injection
Prompt Injection
- מה זה
- מצב שבו קלט משתמש משנה את התנהגות מודל AI או גורם לו להתעלם מהנחיות.
- למה זה חשוב
- חשוב לאפליקציות שמשלבות AI, Claude Code או שירותי LLM.
- דוגמה
- משתמש מזין טקסט שגורם למערכת AI להחזיר מידע או לבצע פעולה שלא התכוונו אליה.
- מה לבדוק / איך למנוע
- מפרידים בין נתוני משתמש להוראות מערכת, מגבילים פעולות, לא נותנים למודל גישה חופשית ל-secrets, ומאמתים תוצאות בצד שרת.
סקריפטינג בין אתרים — XSS
XSS = Cross-Site Scripting
- מה זה
- חולשה שבה תוכן לא בטוח שמקורו במשתמש מוצג או מורץ אצל משתמשים אחרים.
- למה זה חשוב
- באתרים עם תוכן משתמשים, הודעות, תגובות או תיאורים, זה סיכון נפוץ.
- דוגמה
- משתמש מזין תוכן שמוצג לאחרים בלי ניקוי מתאים.
- מה לבדוק / איך למנוע
- משתמשים ב-escaping, sanitization, frameworks בטוחים ו-CSP. בודקים שדות שמוצגים חזרה למשתמשים.
זיוף בקשה בין אתרים — CSRF
CSRF = Cross-Site Request Forgery
- מה זה
- מצב שבו אתר חיצוני גורם לדפדפן של משתמש מחובר לבצע פעולה באתר אחר.
- למה זה חשוב
- רלוונטי בעיקר כאשר פעולות מבוססות cookies/session ללא הגנות מתאימות.
- דוגמה
- משתמש מחובר, ואתר אחר מנסה לגרום לדפדפן שלו לשלוח פעולה רגישה.
- מה לבדוק / איך למנוע
- בודקים שימוש ב-SameSite cookies, CSRF tokens או מנגנוני auth שמתאימים לארכיטקטורה.
זיוף בקשה מצד שרת — SSRF
SSRF = Server-Side Request Forgery
- מה זה
- מצב שבו השרת נגרם לגשת לכתובות או שירותים שלא אמור לגשת אליהם.
- למה זה חשוב
- רלוונטי אם האתר מקבל URL מהמשתמש ומוריד/קורא ממנו תוכן בצד שרת.
- דוגמה
- שדה “ייבוא מקישור” שגורם לשרת לגשת לכתובות פנימיות.
- מה לבדוק / איך למנוע
- מגבילים כתובות מותרות, חוסמים רשתות פנימיות, ולא סומכים על URLs מקלט משתמש.
הגדרות אבטחה שגויות — Security Misconfiguration
Security Misconfiguration
- מה זה
- הגדרה לא נכונה של שרת, DB, Storage, Headers, CORS, Debug או הרשאות.
- למה זה חשוב
- באתרי AI זה נפוץ כי הרבה הגדרות נוצרות מהר או נשארות ברירת מחדל.
- דוגמה
- RLS כבוי, bucket ציבורי, CORS פתוח מדי, debug פעיל בפרודקשן.
- מה לבדוק / איך למנוע
- משתמשים בצ׳קליסט Production, SecurityHeaders, Supabase Advisor ובדיקות ידניות.
רכיבים פגיעים או מיושנים — Vulnerable and Outdated Components
Vulnerable and Outdated Components
- מה זה
- ספריות, חבילות או רכיבים עם חולשות ידועות או גרסאות ישנות.
- למה זה חשוב
- רלוונטי במיוחד כשיש GitHub/package.json ותלויות npm.
- דוגמה
- חבילת npm עם CVE פעיל.
- מה לבדוק / איך למנוע
- בודקים Dependabot/SCA, מעדכנים גרסאות, ובודקים שהעדכון לא שובר את האתר.
כשלי זיהוי ואימות — Identification and Authentication Failures
Identification and Authentication Failures
- מה זה
- בעיות במנגנוני Login, Session, Reset Password, MFA וניהול משתמשים.
- למה זה חשוב
- גם אם הרשאות נכונות, Auth חלש עלול לאפשר כניסה או שימוש לא רצוי.
- דוגמה
- Reset password לא מוגדר נכון או session לא פוקע.
- מה לבדוק / איך למנוע
- בודקים זרימות Login/Logout/Reset, חוזק סיסמאות, MFA אם רלוונטי והתנהגות session.
כשלי קריפטוגרפיה — Cryptographic Failures
Cryptographic Failures
- מה זה
- בעיות בהצפנה, שמירת מידע רגיש, TLS, סיסמאות או העברת מידע.
- למה זה חשוב
- בדרך כלל בקורס הזה ניגע בזה ברמת Production: HTTPS, secrets ומידע רגיש.
- דוגמה
- אתר ללא HTTPS או מידע אישי שנשלח/נשמר בלי הגנה מתאימה.
- מה לבדוק / איך למנוע
- מוודאים HTTPS/TLS, לא שומרים סודות בדפדפן, ומשתמשים בשירותי Auth מוכרים במקום פתרונות מאולתרים.
כשלי שלמות תוכנה ודאטה — Software and Data Integrity Failures
Software and Data Integrity Failures
- מה זה
- סיכונים שנובעים מתהליך build/deploy לא בטוח, dependencies לא מאומתות או שרשרת אספקה.
- למה זה חשוב
- רלוונטי לפרויקטים עם GitHub, CI/CD וחבילות צד שלישי.
- דוגמה
- עדכון dependency לא מבוקר מכניס התנהגות לא רצויה.
- מה לבדוק / איך למנוע
- משתמשים ב-PR review, Dependabot, lock files וסריקות לפני deploy.
כשלי ניטור ורישום — Security Logging and Monitoring Failures
Security Logging and Monitoring Failures
- מה זה
- חוסר יכולת לדעת מה קרה במערכת אחרי אירוע, שגיאה או ניסיון גישה חריג.
- למה זה חשוב
- בלי logs/monitoring קשה לגלות בעיות או להבין השפעה.
- דוגמה
- אין תיעוד של ניסיונות כניסה או גישה לעמודים רגישים.
- מה לבדוק / איך למנוע
- מגדירים logs בסיסיים, error tracking והתראות לאירועים חריגים בפרודקשן.
חשיפת סודות — Secrets Exposure
Secrets Exposure
- מה זה
- מצב שבו מפתחות, tokens, סיסמאות או credentials מופיעים במקום גלוי או לא מוגן.
- למה זה חשוב
- אחת הבעיות הכי מסוכנות בפרויקטים שנבנים מהר, במיוחד עם AI ו-GitHub.
- דוגמה
- OpenAI key או Supabase service role key מופיע ב-Frontend או repo.
- מה לבדוק / איך למנוע
- מריצים secret scanning, בודקים ENV, מחליפים מפתחות שנחשפו, ומעבירים סודות לצד שרת.
חשיפת מידע — Information Disclosure
Information Disclosure
- מה זה
- החזרת או הצגת מידע שלא אמור להיות גלוי למשתמש.
- למה זה חשוב
- זה יכול להיות מידע אישי, debug data, IDs, roles, הודעות שגיאה, paths פנימיים או תגובות API רחבות מדי.
- דוגמה
- Response של טופס מחזיר internal_id ו-debug_token.
- מה לבדוק / איך למנוע
- בודקים Responses, Console, error messages ועמודים פרטיים. מחזירים רק מידע שנדרש להצגה.
מצב Debug פעיל — Debug Mode
Debug Mode
- מה זה
- מצב פיתוח שמציג מידע פנימי או מפורט מדי.
- למה זה חשוב
- בפרודקשן זה עלול לחשוף פרטים טכניים שמסייעים להבין את המערכת.
- דוגמה
- שגיאה באתר מציגה stack trace או משתני סביבה.
- מה לבדוק / איך למנוע
- מוודאים ש-debug כבוי בפרודקשן וששגיאות מוצגות בצורה כללית למשתמש.
טיפול בשגיאות — Error Handling
Error Handling
- מה זה
- האופן שבו המערכת מציגה ומתעדת שגיאות.
- למה זה חשוב
- שגיאות צריכות לעזור למשתמש בלי לחשוף מידע פנימי.
- דוגמה
- במקום “Database connection failed at...” מציגים “אירעה שגיאה, נסו שוב מאוחר יותר”.
- מה לבדוק / איך למנוע
- בודקים טפסים ופעולות כושלות ורואים מה מוצג במסך ומה נרשם בלוגים.
הגבלת קצב — Rate Limiting
Rate Limiting
- מה זה
- הגבלת כמות בקשות שמשתמש/כתובת יכולים לבצע בזמן מסוים.
- למה זה חשוב
- חשוב לטפסים, Login, API ופעולות יקרות כדי לצמצם abuse וספאם.
- דוגמה
- טופס שניתן לשלוח מאות פעמים בדקה ללא מגבלה.
- מה לבדוק / איך למנוע
- מוסיפים מגבלות לפי IP/משתמש/פעולה, CAPTCHA במידת הצורך, וניטור חריגות.
ניסיונות התחברות חוזרים — Brute Force
Brute Force
- מה זה
- ניסיון שיטתי לנחש סיסמאות או codes באמצעות הרבה ניסיונות.
- למה זה חשוב
- רלוונטי ל-Login, reset codes וטפסים רגישים.
- דוגמה
- אין הגבלה על ניסיונות התחברות כושלים.
- מה לבדוק / איך למנוע
- מוסיפים rate limiting, lockout זהיר, MFA והתראות לניסיונות חריגים.
שיתוף משאבים בין מקורות — CORS
CORS = Cross-Origin Resource Sharing
- מה זה
- מנגנון דפדפן שמגדיר מאילו דומיינים מותר לקרוא למשאבים/ API.
- למה זה חשוב
- CORS חשוב אבל אינו תחליף להרשאות. גם API עם CORS “סגור” חייב לבדוק משתמש ו-Role.
- דוגמה
- Access-Control-Allow-Origin: * על API רגיש יכול להיות סימן להגדרה רחבה מדי.
- מה לבדוק / איך למנוע
- בודקים CORS ב-headers ומוודאים שאין הסתמכות עליו במקום AuthZ אמיתי.
בדיקת אבטחה סטטית — SAST
SAST = Static Application Security Testing
- מה זה
- סריקת קוד בלי להריץ את האפליקציה, כדי למצוא דפוסים בעייתיים.
- למה זה חשוב
- שימושי כשיש GitHub/קוד, למשל Claude Code או export מ-Lovable.
- דוגמה
- CodeQL או Semgrep מזהים שימוש לא בטוח בקוד.
- מה לבדוק / איך למנוע
- מריצים סריקה, קוראים ממצאים, מסמנים false positives ומתקנים מה שרלוונטי.
בדיקת אבטחה דינמית — DAST
DAST = Dynamic Application Security Testing
- מה זה
- בדיקה של האפליקציה כשהיא רצה, מבחוץ, דרך HTTP ודפדפן.
- למה זה חשוב
- שימושי גם בלי גישה לקוד, אבל לא תמיד מזהה לוגיקה עסקית והרשאות בין משתמשים.
- דוגמה
- ZAP בודק headers, קונפיגורציות ובעיות נפוצות באתר חי או staging.
- מה לבדוק / איך למנוע
- מריצים רק על אתר בבעלותך/באישור, קוראים תוצאות בזהירות ומאמתים ידנית.
בדיקת אבטחה אינטראקטיבית — IAST
IAST = Interactive Application Security Testing
- מה זה
- בדיקה שמשלבת מידע מהאפליקציה בזמן ריצה עם ניתוח פנימי.
- למה זה חשוב
- פחות רלוונטי לקורס ראשוני, אבל מושג מקצועי טוב להכיר.
- דוגמה
- כלי שמזהה בעיות בזמן שהאפליקציה מופעלת בבדיקות.
- מה לבדוק / איך למנוע
- להציג כמושג מתקדם, לא חובה ליישום במחזור הראשון.
ניתוח רכיבי תוכנה — SCA
SCA = Software Composition Analysis
- מה זה
- בדיקת ספריות ותלויות צד שלישי כדי לזהות גרסאות פגיעות או מיושנות.
- למה זה חשוב
- בפרויקטים עם npm/package.json זה חלק חשוב מהבדיקה.
- דוגמה
- חבילת React/Node עם advisory פעיל.
- מה לבדוק / איך למנוע
- משתמשים ב-Dependabot, npm audit או כלים דומים, ומעדכנים בזהירות.
סריקת סודות — Secret Scanning
Secret Scanning
- מה זה
- חיפוש מפתחות, tokens ו-credentials בקוד, היסטוריית Git או קבצים.
- למה זה חשוב
- קריטי כשעובדים עם AI שמייצר קוד ועלול לשלב מפתחות במקומות לא נכונים.
- דוגמה
- GitHub מזהה API key שהועלה ל-repository.
- מה לבדוק / איך למנוע
- מחליפים מפתח שנחשף, מסירים מהקוד, מוסיפים ל-ENV ומוודאים שלא נשאר בהיסטוריה רלוונטית.
סריקת קוד — Code Scanning
Code Scanning
- מה זה
- סריקה שמנתחת קוד כדי למצוא בעיות אבטחה, באגים או דפוסים מסוכנים.
- למה זה חשוב
- מוסיף שכבת בדיקה למי שיש GitHub.
- דוגמה
- GitHub Code Scanning מציג alert על קוד בעייתי.
- מה לבדוק / איך למנוע
- קוראים alert, בודקים רלוונטיות, מתקנים ומבצעים commit/PR מסודר.
סריקת תלויות — Dependency Scanning
Dependency Scanning
- מה זה
- בדיקה של חבילות צד שלישי מול מאגרי חולשות ידועות.
- למה זה חשוב
- חבילות מיושנות הן מקור סיכון גם אם הקוד שלך נראה תקין.
- דוגמה
- package-lock כולל גרסה עם CVE.
- מה לבדוק / איך למנוע
- בודקים התראות, משדרגים גרסאות, מריצים בדיקות regression אחרי עדכון.
סריקת חולשות — Vulnerability Scanning
Vulnerability Scanning
- מה זה
- בדיקה אוטומטית שמחפשת חולשות או הגדרות בעייתיות.
- למה זה חשוב
- שימושית להתחלה, אך לא מחליפה בדיקת הרשאות ולוגיקה עסקית.
- דוגמה
- SecurityHeaders מוצא headers חסרים; ZAP מוצא בעיות נפוצות.
- מה לבדוק / איך למנוע
- משלבים סריקה עם בדיקה ידנית ודוח מסודר.
בדיקת חדירות — Penetration Testing (Pentest)
Pentest = Penetration Test
- מה זה
- בדיקה מקצועית ומעמיקה שמנסה לזהות ולנצל חולשות בסביבה מורשית.
- למה זה חשוב
- הקורס לא מחליף pentest מלא, אלא מלמד בדיקות מוכנות בסיסיות/בינוניות.
- דוגמה
- מערכת עם תשלומים, דאטה רגיש או לקוחות רבים עשויה לדרוש pentest מקצועי.
- מה לבדוק / איך למנוע
- מגדירים Scope, אישור כתוב, גבולות, ודוח. בקורס נשארים בהדגמות מעבדה ובדיקות הגנתיות.
בדיקה ידנית — Manual Review
Manual Security Review
- מה זה
- בדיקה אנושית של התנהגות, הרשאות, לוגיקה, דוחות וכלים.
- למה זה חשוב
- קריטית כי כלים אוטומטיים לא תמיד מבינים מי אמור לראות מה.
- דוגמה
- בדיקה עם דניאל ומאיה כדי לוודא שאין חשיפת מידע בין משתמשים.
- מה לבדוק / איך למנוע
- משלבים checklist, כמה משתמשי בדיקה, DevTools ודוח ממצאים.
ממצא שווא — False Positive
False Positive
- מה זה
- ממצא שכלי מסמן כבעיה, אבל בפועל אינו מהווה סיכון אמיתי בהקשר הנבדק.
- למה זה חשוב
- מונע פאניקה ומלמד לקרוא תוצאות בצורה מקצועית.
- דוגמה
- כלי מסמן header חסר כחמור, אבל האתר הוא דמו פנימי ללא exposure ציבורי.
- מה לבדוק / איך למנוע
- מאמתים כל ממצא, מתעדים החלטה, ולא מעבירים ללקוח רעש מיותר.
בעיה שלא זוהתה — False Negative
False Negative
- מה זה
- בעיה אמיתית שהכלי לא מצא.
- למה זה חשוב
- חשוב להסביר למה “הסריקה יצאה נקייה” לא שווה “האתר בטוח”.
- דוגמה
- סורק לא מצא IDOR כי לא יודע שמאיה ודניאל משתמשים שונים.
- מה לבדוק / איך למנוע
- מבצעים בדיקות ידניות ללוגיקה עסקית והרשאות גם אחרי סריקה אוטומטית.
רמת חומרה — Severity
Severity
- מה זה
- דירוג טכני/מקצועי של חומרת ממצא.
- למה זה חשוב
- עוזר לתעדף טיפול ולהסביר ללקוח מה דחוף.
- דוגמה
- Critical, High, Medium, Low, Info.
- מה לבדוק / איך למנוע
- מדרגים לפי השפעה, סבירות, נגישות, היקף מידע וקלות ניצול.
סיכון — Risk
Risk
- מה זה
- השילוב בין מה עלול לקרות, כמה זה חמור וכמה סביר שזה יקרה.
- למה זה חשוב
- לקוח לא צריך רק שם טכני; הוא צריך להבין משמעות עסקית.
- דוגמה
- “משתמשים עלולים לראות מידע של לקוחות אחרים” הוא risk ברור יותר מ-“IDOR”.
- מה לבדוק / איך למנוע
- בכל ממצא כותבים: מה נמצא, למה זה חשוב, מה ההשפעה ומה לתקן.
השפעה — Impact
Impact
- מה זה
- מה עלול לקרות אם הבעיה מנוצלת.
- למה זה חשוב
- עוזר לדרג חומרה ותעדוף.
- דוגמה
- חשיפת מסמכים פרטיים, שינוי סטטוס בקשות, פגיעה באמון לקוחות.
- מה לבדוק / איך למנוע
- כותבים impact בשפה עסקית ולא רק טכנית.
סבירות — Likelihood
Likelihood
- מה זה
- כמה סביר שהבעיה תתרחש או תנוצל.
- למה זה חשוב
- אותה חומרה טכנית יכולה לקבל תעדוף שונה לפי חשיפה, מורכבות ונגישות.
- דוגמה
- עמוד ציבורי עם מזהים צפויים הוא סביר יותר לניצול מעמוד פנימי חסום.
- מה לבדוק / איך למנוע
- מעריכים מי יכול להגיע לבעיה וכמה קל לבצע אותה בתנאים רגילים.
קלות ניצול — Exploitability
Exploitability
- מה זה
- כמה קל לנצל את החולשה בפועל.
- למה זה חשוב
- עוזר להבחין בין בעיה תיאורטית לבעיה דחופה.
- דוגמה
- אם מספיק לשנות URL כדי לראות מידע אחר, exploitability גבוהה.
- מה לבדוק / איך למנוע
- לא מפרטים הוראות תקיפה לא מורשית; משתמשים בזה לדירוג ותיקון.
מאגר קוד — Repository (Repo)
Repo = Repository
- מה זה
- מקום שבו נשמר הקוד, ההיסטוריה, ההגדרות ולעיתים גם קבצי הפרויקט.
- למה זה חשוב
- אם פרויקט Lovable/Claude Code מחובר ל-GitHub, אפשר להוסיף בדיקות קוד ותלויות.
- דוגמה
- Repo שמכיל package.json, src, env example ו-README.
- מה לבדוק / איך למנוע
- בודקים הרשאות repo, visibility, Security tab, secrets ותלויות.
ענף קוד — Branch
Branch
- מה זה
- קו עבודה נפרד בקוד, למשל main, staging או feature/security-fix.
- למה זה חשוב
- מאפשר לתקן בעיות בלי לשבור production.
- דוגמה
- תיקון RLS או route protection נעשה ב-branch נפרד.
- מה לבדוק / איך למנוע
- עובדים ב-branch, בודקים, ואז ממזגים ל-main אחרי review.
קומיט — Commit
Commit
- מה זה
- שמירת שינוי בהיסטוריית Git.
- למה זה חשוב
- היסטוריית commit יכולה להכיל בטעות secrets ולכן חשוב scanning.
- דוגמה
- commit ישן הכיל API key שנמחק אחר כך מהקובץ, אבל עדיין קיים בהיסטוריה.
- מה לבדוק / איך למנוע
- מריצים secret scanning ומתייחסים לסוד שנכנס להיסטוריה כחשוף.
בקשת מיזוג — Pull Request (PR)
PR = Pull Request
- מה זה
- תהליך שמאפשר לבדוק שינוי לפני מיזוגו לענף הראשי.
- למה זה חשוב
- מקום טוב להריץ בדיקות אבטחה, review וסריקות לפני production.
- דוגמה
- PR שמתקן הרשאות ומראה בדיקות חוזרות.
- מה לבדוק / איך למנוע
- מוסיפים checklist ל-PR: AuthZ, RLS, secrets, dependencies, tests.
לשונית אבטחה בגיטהאב — GitHub Security Tab
GitHub Security Tab
- מה זה
- אזור ב-GitHub שמרכז התראות על קוד, תלויות, secrets ו-advisories.
- למה זה חשוב
- שכבת בדיקה זמינה למי שמחזיק קוד ב-GitHub.
- דוגמה
- התראות Dependabot ו-CodeQL מופיעות תחת Security.
- מה לבדוק / איך למנוע
- בודקים את הלשונית כחלק ממפגש הסריקות ומתרגמים alerts לדוח לקוח.
התראות Dependabot — Dependabot Alerts
Dependabot Alerts
- מה זה
- התראות של GitHub על dependencies עם חולשות ידועות או עדכונים מומלצים.
- למה זה חשוב
- עוזר לבוני AI להבין שהבעיה לא תמיד בקוד שהם כתבו אלא בספריות צד שלישי.
- דוגמה
- Dependabot מסמן חבילת npm בגרסה פגיעה.
- מה לבדוק / איך למנוע
- בודקים severity, גרסה מתוקנת, השפעה על הפרויקט ומבצעים update/test.
מנוע סריקת קוד של GitHub — CodeQL
CodeQL = Code Query Language
- מה זה
- כלי/שפה של GitHub לסריקת קוד ולזיהוי דפוסים בעייתיים.
- למה זה חשוב
- רלוונטי למסלול GitHub מתקדם בקורס.
- דוגמה
- CodeQL alert על שימוש לא בטוח בנתוני משתמש.
- מה לבדוק / איך למנוע
- קוראים alert, בודקים אם רלוונטי, מתקנים ומבצעים סריקה חוזרת.
אבטחת גיטהאב מתקדמת — GHAS
GHAS = GitHub Advanced Security
- מה זה
- סט יכולות אבטחה מתקדמות של GitHub הכולל code scanning, secret scanning ועוד.
- למה זה חשוב
- לא תמיד זמין לכל תלמיד, אבל מושג מקצועי שכדאי להכיר.
- דוגמה
- ארגון מפעיל GHAS כדי לסרוק repositories.
- מה לבדוק / איך למנוע
- להציג כבונוס/המשך מתקדם ולא כתנאי לקורס הראשוני.
ייעוץ אבטחה — Security Advisory
Security Advisory
- מה זה
- פרסום או התראה על חולשה ידועה בספרייה או מוצר.
- למה זה חשוב
- עוזר להבין למה כלי SCA מסמן dependency.
- דוגמה
- ספרייה מפרסמת advisory שממליץ לשדרג לגרסה חדשה.
- מה לבדוק / איך למנוע
- קוראים summary, affected versions, patched versions ומעדכנים בהתאם.
מזהה חולשה רשמי — CVE
CVE = Common Vulnerabilities and Exposures
- מה זה
- מזהה רשמי לחולשת אבטחה ידועה.
- למה זה חשוב
- נותן דרך מקצועית להתייחס לחולשות בספריות ותשתיות.
- דוגמה
- CVE-2025-XXXX מסמן חולשה ידועה בחבילה.
- מה לבדוק / איך למנוע
- בודקים אם הפרויקט משתמש בגרסה מושפעת ומה גרסת התיקון.
ציון חומרה לחולשה — CVSS
CVSS = Common Vulnerability Scoring System
- מה זה
- שיטת ניקוד לחומרת חולשות, בדרך כלל מ-0 עד 10.
- למה זה חשוב
- עוזר להבין חומרת dependency alert, אך לא מחליף הערכת הקשר עסקי.
- דוגמה
- CVSS 9.8 נשמע חמור, אבל צריך לבדוק אם החבילה מופעלת במסלול רלוונטי.
- מה לבדוק / איך למנוע
- משלבים CVSS עם exposure, שימוש בפועל ויכולת תיקון.
רשימת רכיבי תוכנה — SBOM
SBOM = Software Bill of Materials
- מה זה
- רשימה מסודרת של רכיבים ותלויות בפרויקט.
- למה זה חשוב
- מושג מתקדם אך שימושי להבנת supply chain בפרויקטים גדולים.
- דוגמה
- מסמך שמפרט אילו חבילות וגרסאות קיימות בפרויקט.
- מה לבדוק / איך למנוע
- להכיר כמושג, לא חובה ליישום בקורס ראשון.
סביבת ייצור — Production
Prod = Production Environment
- מה זה
- הסביבה האמיתית שבה משתמשים אמיתיים עובדים עם האתר.
- למה זה חשוב
- מה שעובד ב-Preview לא תמיד מוכן ל-Production מבחינת הרשאות, ENV, דומיין ו-Auth URLs.
- דוגמה
- האתר עלה ל-domain אמיתי ומקבל פניות של לקוחות.
- מה לבדוק / איך למנוע
- לפני Production עוברים checklist: Auth, Supabase, ENV, headers, טפסים, SEO ודומיין.
סביבת בדיקה — Preview / Staging
Preview or Staging Environment
- מה זה
- סביבה לבדיקה לפני Production.
- למה זה חשוב
- מקום בטוח להריץ דמו, בדיקות ותיקונים בלי לפגוע במשתמשים אמיתיים.
- דוגמה
- Vercel Preview או staging subdomain.
- מה לבדוק / איך למנוע
- מריצים בדיקות על staging ומוודאים שאין דאטה אמיתי או סודות חשופים.
בנייה — Build
Build Process
- מה זה
- תהליך הכנת האפליקציה להרצה: bundling, compiling, optimization.
- למה זה חשוב
- בעיות ENV או dependencies יכולות להופיע רק בזמן build.
- דוגמה
- Build נכשל כי חסר Environment Variable בפרודקשן.
- מה לבדוק / איך למנוע
- בודקים build logs, משתני סביבה ותלויות לפני Go Live.
פריסה — Deployment
Deployment
- מה זה
- העלאת גרסה של האתר לסביבה פעילה.
- למה זה חשוב
- פריסה היא נקודת סיכון כי שינוי קטן יכול לפתוח בעיה בפרודקשן.
- דוגמה
- Deploy ל-Vercel אחרי תיקון הרשאות.
- מה לבדוק / איך למנוע
- מגדירים תהליך מסודר: staging, בדיקות, deploy, smoke test ו-retest.
חזרה לגרסה קודמת — Rollback
Rollback
- מה זה
- החזרת האתר לגרסה קודמת במקרה שגרסה חדשה יצרה תקלה.
- למה זה חשוב
- חלק חשוב מניהול סיכונים בפרודקשן.
- דוגמה
- אחרי deploy נשבר Login, חוזרים לגרסה יציבה.
- מה לבדוק / איך למנוע
- מוודאים שיש יכולת rollback ותיעוד של הגרסה האחרונה התקינה.
לוגים — Logs
Logs
- מה זה
- רישומים של אירועים, שגיאות, בקשות ופעולות במערכת.
- למה זה חשוב
- עוזרים להבין תקלות, ניסיונות גישה ובעיות אחרי השקה.
- דוגמה
- לוג של 403 repeated על Admin route.
- מה לבדוק / איך למנוע
- שומרים לוגים שימושיים בלי לחשוף secrets או מידע אישי מיותר.
ניטור — Monitoring
Monitoring
- מה זה
- מעקב אחרי זמינות, ביצועים, שגיאות ואירועים חריגים.
- למה זה חשוב
- אחרי Go Live צריך לדעת אם טפסים נשברים, login נכשל או יש שגיאות רבות.
- דוגמה
- התראה על עלייה בשגיאות 500 אחרי deploy.
- מה לבדוק / איך למנוע
- מגדירים error tracking, uptime monitoring והתראות בסיסיות.
התראות — Alerting
Alerting
- מה זה
- מנגנון שמודיע כשקורה אירוע חריג או תקלה.
- למה זה חשוב
- בלי התראות, בעיות בפרודקשן יכולות להישאר ימים בלי טיפול.
- דוגמה
- התראה כשיש הרבה ניסיונות Login כושלים או טופס מפסיק לעבוד.
- מה לבדוק / איך למנוע
- מגדירים התראות למדדים חשובים ולא מציפים ברעש.
חומת אש לאפליקציות WAF
WAF = Web Application Firewall
- מה זה
- שכבת הגנה לפני האתר שיכולה לחסום בקשות חשודות או דפוסי תקיפה נפוצים.
- למה זה חשוב
- מושג חשוב, אבל לא תחליף לתיקון הרשאות וקוד.
- דוגמה
- WAF עשוי לחסום בקשות אוטומטיות חשודות.
- מה לבדוק / איך למנוע
- להכיר כשכבת הגנה נוספת; לא לסמוך עליו במקום RLS/AuthZ נכון.
מערכת שמות דומיין — DNS
DNS = Domain Name System
- מה זה
- המערכת שמחברת דומיין לשרת/שירות כמו Vercel.
- למה זה חשוב
- הגדרות DNS שגויות יכולות לשבור אתר, HTTPS, אימיילים או subdomains.
- דוגמה
- A/CNAME שמפנה דומיין ל-Vercel.
- מה לבדוק / איך למנוע
- בודקים רשומות DNS, דומיין, SSL ו-redirects כחלק מ-Go Live.
תקשורת מוצפנת — HTTPS / TLS
TLS = Hypertext Transfer Protocol Secure / Transport Layer Security
- מה זה
- הצפנת התקשורת בין הדפדפן לאתר.
- למה זה חשוב
- בסיס חובה לכל אתר עם Login, טפסים או מידע אישי.
- דוגמה
- אתר Production חייב להיפתח עם https:// ולא http://.
- מה לבדוק / איך למנוע
- בודקים שה-HTTPS פעיל, התעודה תקינה ואין mixed content.
תעודת SSL/TLS — SSL Certificate
SSL = Secure Sockets Layer Certificate
- מה זה
- תעודה שמאפשרת לדפדפן לאמת את האתר ולהצפין תעבורה.
- למה זה חשוב
- למרות שהמונח SSL ישן, משתמשים בו עדיין בשפה יומיומית.
- דוגמה
- Vercel מנפיק תעודת TLS לדומיין.
- מה לבדוק / איך למנוע
- בודקים תוקף תעודה, התאמה לדומיין וחידוש אוטומטי.
רשת הפצת תוכן — CDN
CDN = Content Delivery Network
- מה זה
- שירות שמפיץ תוכן דרך שרתים קרובים למשתמשים ולעיתים מוסיף שכבות אבטחה.
- למה זה חשוב
- משפיע על ביצועים, caching ולעיתים headers/security.
- דוגמה
- Vercel/Cloudflare מפיצים assets דרך CDN.
- מה לבדוק / איך למנוע
- בודקים cache, headers, redirects והאם מידע פרטי לא נשמר ב-cache ציבורי.
כותרות אבטחה — Security Headers
Security Headers
- מה זה
- Headers שהשרת שולח לדפדפן כדי להקשיח התנהגות ולהפחית סיכונים.
- למה זה חשוב
- בדיקה מהירה שנותנת ערך, אבל לא מחליפה הרשאות ו-RLS.
- דוגמה
- CSP, HSTS, Referrer-Policy, Permissions-Policy.
- מה לבדוק / איך למנוע
- בודקים עם SecurityHeaders/Observatory ומחליטים מה רלוונטי לאתר.
מדיניות אבטחת תוכן — CSP
CSP = Content Security Policy
- מה זה
- Header שמגדיר מאילו מקורות מותר לטעון scripts, styles, images ועוד.
- למה זה חשוב
- יכול לצמצם XSS וטעינת קוד ממקורות לא רצויים.
- דוגמה
- CSP מגביל scripts לדומיין האתר ולשירותים מאושרים.
- מה לבדוק / איך למנוע
- מתחילים בזהירות, בודקים report-only אם צריך, ולא שוברים פונקציונליות.
הכרחת HTTPS — HSTS
HSTS = HTTP Strict Transport Security
- מה זה
- Header שמורה לדפדפן להשתמש תמיד ב-HTTPS לאתר.
- למה זה חשוב
- מחזק את ההגנה אחרי ש-HTTPS מוגדר תקין.
- דוגמה
- Strict-Transport-Security פעיל בדומיין Production.
- מה לבדוק / איך למנוע
- מפעילים רק אחרי שה-HTTPS עובד יציב בכל הדומיין וה-subdomains הרלוונטיים.
מדיניות — Referrer-Policy
Referrer-Policy
- מה זה
- Header שמגדיר כמה מידע על העמוד הקודם נשלח לאתרים אחרים.
- למה זה חשוב
- יכול למנוע דליפת URLs פנימיים או פרמטרים רגישים.
- דוגמה
- מעבר מדף פרטי לאתר חיצוני לא צריך לחשוף URL רגיש מלא.
- מה לבדוק / איך למנוע
- מגדירים מדיניות שמאזנת פרטיות וצרכי אנליטיקה.
מדיניות הרשאות דפדפן — Permissions-Policy
Permissions-Policy
- מה זה
- Header שמגביל שימוש ביכולות דפדפן כמו מצלמה, מיקרופון, מיקום וחיישנים.
- למה זה חשוב
- מקטין הרשאות שאינן נדרשות לאתר.
- דוגמה
- אתר שלא צריך מצלמה חוסם camera/microphone.
- מה לבדוק / איך למנוע
- מגדירים רק יכולות נחוצות ומבטלים את השאר.
מניעת הטמעה במסגרת — X-Frame-Options / frame-ancestors
X-Frame-Options / CSP frame-ancestors
- מה זה
- מנגנון שמגביל הטמעת האתר בתוך iframe באתרים אחרים.
- למה זה חשוב
- יכול לצמצם סיכוני clickjacking.
- דוגמה
- Admin panel לא אמור להיטען בתוך iframe של אתר אחר.
- מה לבדוק / איך למנוע
- מגדירים frame-ancestors ב-CSP או X-Frame-Options לפי הצורך.
הגדרת SameSite לעוגיות — SameSite Cookie
SameSite Cookie Attribute
- מה זה
- מאפיין Cookie שמגביל שליחת Cookies בין אתרים.
- למה זה חשוב
- עוזר לצמצם CSRF במערכות מבוססות Cookies.
- דוגמה
- SameSite=Lax או Strict לפי הצורך.
- מה לבדוק / איך למנוע
- בודקים שהגדרת SameSite מתאימה לזרימות login, auth callbacks ושירותים חיצוניים.
עוגייה חסומה ל-JavaScript — HttpOnly Cookie
HttpOnly Cookie Attribute
- מה זה
- מאפיין שמונע מ-JavaScript בדפדפן לקרוא Cookie.
- למה זה חשוב
- מקטין סיכון אם יש XSS, כי JS לא יכול לקרוא את ה-session cookie.
- דוגמה
- session cookie מסומן HttpOnly.
- מה לבדוק / איך למנוע
- בודקים Cookies רגישים ומעדיפים HttpOnly כשהארכיטקטורה מאפשרת.
עוגייה מאובטחת — Secure Cookie
Secure Cookie Attribute
- מה זה
- מאפיין שמאפשר שליחת Cookie רק דרך HTTPS.
- למה זה חשוב
- חשוב לכל Cookie רגיש בפרודקשן.
- דוגמה
- session cookie עם Secure=true.
- מה לבדוק / איך למנוע
- בודקים בפרודקשן שכל Cookies רגישים נשלחים רק ב-HTTPS.
מדיניות Cache — Cache-Control
Cache-Control
- מה זה
- Header שקובע איך דפדפן/CDN שומרים תוכן.
- למה זה חשוב
- Cache לא נכון יכול לשמור מידע פרטי במקום ציבורי או משותף.
- דוגמה
- Dashboard פרטי לא אמור להיות cache ציבורי.
- מה לבדוק / איך למנוע
- מגדירים no-store/private לעמודים פרטיים ו-cache מבוקר ל-assets ציבוריים.
ממצא — Finding
Security Finding
- מה זה
- בעיה, חולשה, הגדרה חסרה או סיכון שנמצא במהלך בדיקה.
- למה זה חשוב
- הממצא הוא יחידת העבודה בדוח ללקוח.
- דוגמה
- “משתמש רגיל יכול לראות בקשות של משתמש אחר”.
- מה לבדוק / איך למנוע
- לכל ממצא כותבים כותרת, חומרה, מה נמצא, הוכחה, סיכון והמלצת תיקון.
הוכחה — Evidence
Evidence
- מה זה
- תיעוד שמראה שהממצא אמיתי.
- למה זה חשוב
- עוזר ללקוח להבין ולמפתח לשחזר ולתקן.
- דוגמה
- צילום מסך, URL, תיאור צעדים, Response מצונזר.
- מה לבדוק / איך למנוע
- מתעדים בלי לחשוף מידע רגיש אמיתי; משתמשים בדאטה דמו/מצונזר.
תיקון מומלץ — Remediation
Remediation
- מה זה
- הפעולה המומלצת כדי לתקן את שורש הבעיה.
- למה זה חשוב
- מבדיל בין “מצאתי בעיה” לבין “יש תוכנית פעולה”.
- דוגמה
- להוסיף RLS policy שמחזירה רק rows של המשתמש המחובר.
- מה לבדוק / איך למנוע
- כותבים תיקון ברור, מעשי, לפי עדיפות, בלי להתחייב לתיקון מלא אם זה מחוץ להיקף.
הפחתת סיכון — Mitigation
Mitigation
- מה זה
- פעולה שמקטינה סיכון גם אם לא מתקנת את שורש הבעיה לגמרי.
- למה זה חשוב
- שימושי כשאין זמן לתיקון מלא לפני השקה.
- דוגמה
- חסימת עמוד זמנית עד להשלמת תיקון הרשאות.
- מה לבדוק / איך למנוע
- מציינים בדוח אם מדובר במענה זמני ולא תיקון סופי.
בדיקה חוזרת — Retest
Retest
- מה זה
- בדיקה שנעשית אחרי תיקון כדי לוודא שהבעיה נסגרה.
- למה זה חשוב
- בלי retest אי אפשר לדעת שהתיקון באמת עבד.
- דוגמה
- אחרי תיקון RLS, נכנסים שוב כדניאל ומוודאים שאינו רואה מידע של מאיה.
- מה לבדוק / איך למנוע
- מתעדים סטטוס: פתוח, תוקן, תוקן חלקית, לא ניתן לאימות.
היקף בדיקה — Scope
Scope
- מה זה
- מה נכלל בבדיקה: דומיינים, עמודים, משתמשים, מערכות, כלים ורמות עומק.
- למה זה חשוב
- מונע אי הבנות מול לקוח ומגדיר גבולות אחריות.
- דוגמה
- נבדקו האתר הראשי, Login, Dashboard, Supabase ו-Storage; לא נבדקו תשלומים.
- מה לבדוק / איך למנוע
- מגדירים Scope בכתב לפני תחילת בדיקה.
מחוץ להיקף — Out of Scope
Out of Scope
- מה זה
- מה לא נכלל בבדיקה.
- למה זה חשוב
- חשוב במיוחד כדי לא ליצור ציפייה לפנטסט מלא או תיקונים כלולים.
- דוגמה
- לא נבדקו עומסים, תשתיות ענן עמוקות, קוד מלא או compliance רגולטורי.
- מה לבדוק / איך למנוע
- כותבים Out of Scope בדוח ובהצעת המחיר.
דיווח אחראי — Responsible Disclosure
Responsible Disclosure
- מה זה
- דרך אתית לדווח על חולשה לבעל המערכת בלי לפרסם או לנצל אותה לרעה.
- למה זה חשוב
- חשוב אם תלמיד מוצא בעיה אצל לקוח או צד שלישי.
- דוגמה
- שולחים לבעל האתר תיאור מסודר וממתינים לתגובה במקום לפרסם בפומבי.
- מה לבדוק / איך למנוע
- בודקים רק עם אישור; אם נמצאה בעיה לא צפויה, עוצרים ומדווחים בצורה אחראית.
הסכם רמת שירות — SLA
SLA = Service Level Agreement
- מה זה
- הגדרת זמני יעד לטיפול או תגובה לפי חומרה.
- למה זה חשוב
- עוזר ללקוח להבין מה דחוף ומה יכול לחכות.
- דוגמה
- Critical לטיפול מיידי, High תוך ימים, Medium בהמשך sprint.
- מה לבדוק / איך למנוע
- משתמשים ב-SLA כהמלצה או כחלק מהסכם שירות, לא כהבטחה בלי תיאום.
קבלת סיכון — Risk Acceptance
Risk Acceptance
- מה זה
- החלטה מודעת של הלקוח לקבל סיכון מסוים במקום לתקן אותו מיד.
- למה זה חשוב
- לא כל ממצא יתוקן מיד, אבל ההחלטה צריכה להיות מודעת ומתועדת.
- דוגמה
- לקוח מחליט לדחות תיקון Low עד לגרסה הבאה.
- מה לבדוק / איך למנוע
- מתעדים מי אישר, מה הסיכון, ולמה נדחה.
תקציר מנהלים — Executive Summary
Executive Summary
- מה זה
- סיכום קצר בשפה עסקית של מצב האבטחה, הסיכונים והצעדים הבאים.
- למה זה חשוב
- לקוח לא טכני צריך להבין את התמונה בלי לקרוא כל ממצא טכני.
- דוגמה
- “נמצאה בעיית הרשאות חמורה אחת שמומלץ לתקן לפני השקה”.
- מה לבדוק / איך למנוע
- כותבים קצר, ברור, ללא הפחדות וללא הבטחות “מאובטח 100%”.
פרטים טכניים — Technical Details
Technical Details
- מה זה
- החלק בדוח שמיועד למפתח/מבצע תיקון ומסביר איך לשחזר ומה לתקן.
- למה זה חשוב
- מאפשר להפוך ממצא לתיקון בפועל.
- דוגמה
- URL, role שנבדק, תוצאה צפויה מול תוצאה בפועל, המלצת תיקון.
- מה לבדוק / איך למנוע
- כוללים מספיק מידע לתיקון, אבל מצנזרים סודות ונתונים אמיתיים.
פרוטוקול הקשר למודל — MCP
MCP = Model Context Protocol
- מה זה
- פרוטוקול פתוח שמאפשר למודל AI (כמו Claude) להתחבר לכלים, מקורות מידע ושירותים חיצוניים בצורה מתוקננת, במקום אינטגרציה ייעודית לכל כלי.
- למה זה חשוב
- ככל שיותר אתרי Lovable ו-Claude Code מחברים MCP servers (Supabase, GitHub, אימייל ועוד), כל server כזה הוא נקודת גישה נוספת שדורשת בדיקת הרשאות ואמון.
- דוגמה
- Claude Code מתחבר ל-MCP server של Supabase כדי להריץ שאילתות ישירות על בסיס הנתונים של הפרויקט.
- מה לבדוק / איך למנוע
- ממפים אילו MCP servers מחוברים, אילו הרשאות יש לכל אחד, והאם מודל ה-AI יכול לבצע פעולות רגישות בלי אישור מפורש.
פיתוח מונחה AI — Vibe Coding
Vibe Coding
- מה זה
- שיטת פיתוח שבה המפתח מתאר בשפה טבעית מה הוא רוצה, וכלי AI כמו Lovable, Claude Code או Cursor מייצרים את מרבית הקוד בפועל.
- למה זה חשוב
- כשה-AI כותב את רוב הקוד, קל להחמיץ בדיקות הרשאה, ניהול סודות ו-RLS — בדיוק הפערים שהמילון הזה עוסק בהם.
- דוגמה
- בונה אתר מתאר "מערכת ניהול לקוחות עם התחברות" ל-Lovable, שמייצרת טבלאות, טפסים ו-API תוך דקות.
- מה לבדוק / איך למנוע
- מתייחסים לכל קוד שנוצר על ידי AI כאילו נכתב על ידי מפתח זוטר: קוראים, בודקים הרשאות, ולא מניחים שהוא מאובטח כברירת מחדל.
הזיית חבילות AI — Slopsquatting
Slopsquatting = AI Package Hallucination Squatting
- מה זה
- מצב שבו מודל AI "ממציא" שם חבילת קוד (npm/PyPI) שלא קיימת באמת, ותוקפים מזהים את הדפוס ונרשמים לשם הזה מראש עם קוד זדוני.
- למה זה חשוב
- כלי Vibe Coding מייצרים import/install commands מהר, ולפעמים בלי שהמפתח בודק שהחבילה אכן קיימת ואמינה.
- דוגמה
- Claude מציע להתקין ספריית "react-secure-forms" שלא קיימת בפועל; תוקף כבר רשם את השם הזה ב-npm עם קוד זדוני.
- מה לבדוק / איך למנוע
- לפני התקנת חבילה שה-AI המליץ עליה, מוודאים שהיא קיימת במאגר הרשמי, עם היסטוריה, downloads ותחזוקה אמיתית.
שיוך המוני — Mass Assignment
Mass Assignment
- מה זה
- חולשה שבה טופס או API מקבלים אובייקט שלם מהלקוח וכותבים אותו ישירות לטבלה, כולל שדות שהמשתמש לא אמור להיות מסוגל לשנות.
- למה זה חשוב
- נפוץ מאוד באתרי Lovable/Supabase שבהם טופס נקשר ישירות לעמודות ב-DB בלי סינון שדות מפורש.
- דוגמה
- טופס עדכון פרופיל שולח גם role: "admin" בבקשה, וה-API מעדכן את זה כי הוא כותב את כל האובייקט שהתקבל בלי סינון.
- מה לבדוק / איך למנוע
- מוודאים שה-API/Edge Function מעדכן רק רשימת שדות מפורשת ומותרת, ולא שומר את כל מה שהלקוח שלח.
134Supabase, Lovable ונתונים
התחברות דרך צד שלישי — OAuth 2.0
OAuth 2.0
- מה זה
- פרוטוקול סטנדרטי שמאפשר למשתמש להתחבר לאתר דרך חשבון קיים (Google, GitHub וכו׳) בלי לשתף סיסמה.
- למה זה חשוב
- אתרי Lovable רבים משתמשים ב-Supabase Auth עם OAuth providers, וטעות ב-redirect URLs או scopes יכולה לחשוף מידע או לאפשר התחזות.
- דוגמה
- משתמש לוחץ "התחבר עם Google" ומאשר לאתר גישה לפי ה-scopes שהוגדרו לו מראש.
- מה לבדוק / איך למנוע
- בודקים ש-redirect URLs מוגבלים לדומיינים אמיתיים, וש-scopes המבוקשים הם המינימום הנדרש.
AI פועל באופן עצמאי — Agentic AI
Agentic AI / AI Agent
- מה זה
- מערכת AI שיכולה לתכנן ולבצע רצף פעולות בעצמה (לא רק לענות על שאלה), כולל קריאה לכלים חיצוניים.
- למה זה חשוב
- ככל שסוכן AI מקבל יותר עצמאות (למשל דרך MCP), כך גדל הצורך לוודא שיש לו רק את ההרשאות המינימליות הנדרשות.
- דוגמה
- Claude Code רץ כ-agent בטרמינל, יכול לקרוא קבצים, להריץ פקודות ולבצע commit בעצמו.
- מה לבדוק / איך למנוע
- בודקים אילו פעולות הסוכן מורשה לבצע ללא אישור אנושי, ומגבילים לפי עיקרון ההרשאה המינימלית.
קריאה לכלים — Tool Use / Function Calling
Tool Use / Function Calling
- מה זה
- היכולת של מודל AI לבחור ולהפעיל פונקציה או כלי חיצוני (API, חיפוש, DB) כדי להשלים משימה.
- למה זה חשוב
- כל כלי שמודל AI יכול לקרוא לו הוא בעצם הרשאה — חשוב לדעת אילו כלים חשופים למודל ומה הם מסוגלים לעשות.
- דוגמה
- מודל AI מזהה שצריך לחפש מידע עדכני ובוחר לקרוא לכלי web_search במקום לענות ממידע ישן.
- מה לבדוק / איך למנוע
- רושמים רשימת כלים שחשופים לכל agent/מודל, ומוודאים שאין כלי עם הרשאות רחבות מדי לצורך המשימה.
תקיפת שרשרת אספקה — Supply Chain Attack
Supply Chain Attack
- מה זה
- תקיפה שמכוונת לא לאתר עצמו אלא לרכיב שהוא תלוי בו — ספרייה, כלי build, MCP server או שירות חיצוני.
- למה זה חשוב
- אתר יכול להיות כתוב מצוין, אבל עדיין להיפרץ דרך תלות שנפגעה בלי קשר לקוד שלך.
- דוגמה
- עדכון שגרתי של ספריית npm פופולרית מכיל קוד זדוני שמדליף secrets מכל פרויקט שמשתמש בה.
- מה לבדוק / איך למנוע
- עוקבים אחרי Dependabot/advisories, לא מעדכנים dependencies אוטומטית בלי בדיקה, ומגבילים הרשאות ל-CI/CD ול-MCP servers חיצוניים.
חטיפת קליק — Clickjacking
Clickjacking
- מה זה
- התקפה שבה אתר זדוני טוען את האתר שלך בתוך iframe שקוף ומטעה משתמש ללחוץ על פעולה בלי לדעת.
- למה זה חשוב
- רלוונטי בעיקר לעמודי ניהול או פעולות רגישות (מחיקה, אישור, תשלום) שיכולות להתבצע בלחיצה אחת.
- דוגמה
- משתמש חושב שהוא לוחץ על כפתור משחק, אבל בפועל הוא לוחץ על כפתור "מחק חשבון" של אתר אחר שטעון מתחתיו בשקיפות.
- מה לבדוק / איך למנוע
- מוודאים שיש frame-ancestors מתאים ב-CSP או X-Frame-Options, במיוחד בעמודי אדמין ופעולות הרסניות.
שלמות משאבים — SRI
SRI = Subresource Integrity
- מה זה
- מנגנון שמאפשר לדפדפן לוודא שקובץ JS/CSS שנטען מ-CDN חיצוני לא שונה מהגרסה שציפית לה.
- למה זה חשוב
- אם CDN חיצוני נפרץ, SRI מונע מהדפדפן להריץ קוד ששונה בלי ידיעתך.
- דוגמה
- תג script טוען ספריית JS מ-CDN עם attribute integrity שמכיל hash של הקובץ המקורי.
- מה לבדוק / איך למנוע
- לכל script/style שנטען ממקור חיצוני, בודקים אם אפשר וכדאי להוסיף integrity ו-crossorigin.
אחזור מועשר בייצור — RAG
RAG = Retrieval-Augmented Generation
- מה זה
- טכניקה שבה מודל AI מביא מידע רלוונטי ממקור חיצוני (מסמכים, DB) לפני שהוא מנסח תשובה, במקום להסתמך רק על מה שלמד באימון.
- למה זה חשוב
- אם המקור שממנו שולפים מידע לא מסונן לפי הרשאות משתמש, ה-AI עלול "להדליף" מידע שהמשתמש לא אמור לראות.
- דוגמה
- צ׳אטבוט תמיכה שמביא תשובות ממאגר מסמכים פנימי, אבל לא בודק שהמשתמש מורשה לראות את המסמך הספציפי שנשלף.
- מה לבדוק / איך למנוע
- מוודאים שהאחזור (retrieval) מכבד את אותם כללי הרשאה כמו כל שאילתה רגילה למקור המידע.
חלון הקשר — Context Window
Context Window
- מה זה
- כמות הטקסט (בטוקנים) שמודל AI יכול "לראות" בבת אחת בשיחה או במשימה נתונה.
- למה זה חשוב
- כשסוכן AI עובד על קוד גדול, חלון הקשר מוגבל אומר שהוא עלול לפספס חלקים רלוונטיים לאבטחה שנמצאים מחוץ למה שהוא רואה כרגע.
- דוגמה
- Claude Code מתבקש לתקן קובץ אחד, אבל לא רואה בו-זמנית קובץ הרשאות אחר שתלוי בשינוי הזה.
- מה לבדוק / איך למנוע
- בבקשות משמעותיות, מציינים לסוכן במפורש אילו קבצים/הקשר קשורים, ולא מסתמכים על שהוא "יזכור" הכל.