אבטחת מידע
עודכן לאחרונה: 6 בספטמבר 2026
העמוד הזה מתאר מה מיושם בפועל במערכת. השתדלנו לכתוב רק דברים שאפשר להצביע עליהם בקוד, ולא לכתוב את מה שנשמע טוב.
1. תשלומים
פרטי אשראי לא עוברים דרכנו. הסליקה מתבצעת אצל חברת הסליקה של המסעדה, בדף שלה. אנחנו לא מקבלים מספר כרטיס, לא שומרים אותו ולא רואים אותו — ולכן גם אין אצלנו מאגר של פרטי תשלום שאפשר לפרוץ אליו. מפתחות הגישה לחשבון הסליקה של המסעדה נשמרים במסד הנתונים, נבדקים מול הספק לפני שנשמרים, משמשים את השרת בלבד ולעולם לא מוחזרים לדפדפן. כל חשבון סליקה יכול להיות משויך לרשת אחת בלבד, והשיוך נאכף במסד הנתונים, כך שסועד לא יכול לקבל דף חיוב של מסעדה אחרת.
2. סיסמאות וכניסה
- סיסמאות אינן נשמרות אצלנו. ההזדהות מנוהלת על ידי Supabase Auth, שם הסיסמה נשמרת כגיבוב חד-כיווני. הכניסה עוברת דרך השרת שלנו; הדפדפן אינו מדבר עם Supabase ישירות.
- אסימוני התחברות נשמרים אצלנו כטביעת אצבע SHA-256, לא כערך עצמו.
- אחרי 8 ניסיונות כניסה כושלים הכניסה ננעלת לרבע שעה. הנעילה חלה גם לפי כתובת המייל וגם לפי כתובת ה-IP, וההודעה זהה בין אם המייל קיים ובין אם לא.
- איפוס סיסמה נעשה בקישור חד-פעמי למייל, מוגבל בקצב.
- לכל חשבון — צוות וסועדים כאחד — יש אימות דו-שלבי אופציונלי (TOTP) עם קודי גיבוי, מעמוד האבטחה בחשבון. כשהוא פעיל, סיסמה נכונה לבדה לא יוצרת התחברות כלל, וכיבויו דורש קוד תקף ולא רק התחברות פתוחה.
- תשובות של המערכת (API) מסומנות כלא ניתנות לשמירה במטמון, כך ששום שרת ביניים או דפדפן לא ישמור תשובה של אדם אחד ויציג אותה לאחר.
- שולחן שהחשבון שלו נסגר אינו מקבל יותר הזמנות, קריאות או שיחות מהטלפון שהיה בו; מי שיושב אחר כך סורק את הקוד מחדש.
- הרשמה ופניות בטפסים פתוחים מוגבלות בקצב לפי כתובת IP.
3. הפרדה בין מסעדות
מסעדה רואה את המידע שלה בלבד. מנהל סניף רואה את הסניף שלו ולא סניף אחר של אותה רשת; מנהל רשת רואה את סניפי הרשת שלו ולא רשת אחרת. ההפרדה נאכפת בשרת בכל בקשה, לפי החשבון המחובר, ולא לפי מה שהדפדפן ביקש.
4. קוד השולחן
הקוד שמודבק על השולחן הוא אקראי, ייחודי במערכת כולה, ובנוי מאלפבית שאינו כולל תווים שקל להתבלבל ביניהם. ניסיונות ניחוש מוגבלים בקצב ונרשמים. אפשר להנפיק לשולחן קוד חדש בכל רגע — למשל אם המדבקה צולמה.
5. הדפדפן
- הכול עובר ב-HTTPS בלבד, עם HSTS.
- מדיניות אבטחת תוכן (CSP) שמתירה הרצת סקריפטים מהאתר עצמו בלבד.
- הגנה מפני הטמעת האתר במסגרת באתר אחר (clickjacking).
- עוגיית ההתחברות מסומנת HttpOnly, Secure ו-SameSite.
- כל טקסט שמישהו הקליד — שם מנה, הערת אלרגיה, שם סניף — מוצג כטקסט ולא כקוד.
6. מסד הנתונים והקבצים
כל שאילתה נבנית עם פרמטרים מאוגדים, ולא בהדבקת מחרוזות. המידע מאוחסן על תשתית Cloudflare, מוצפן במנוחה, נכון להיום באזור מערב אירופה. מסמכים שבתי עסק מצרפים לבקשת הצטרפות נשמרים בתיקייה פרטית אצל Supabase (פרנקפורט): אין להם כתובת ציבורית, הם נבדקים לפי תוכנם (לא לפי שם הקובץ) לפני שנשמרים, ומוגשים רק לקונסולת הבעלים שלנו, אחרי הזדהות.
7. בינה מלאכותית
כל פעולה שהעוזר לעסקים מציע חתומה על ידי השרת ומבוצעת רק אחרי אישור מפורש של עובד, ורק במסגרת ההרשאות של החשבון שלו. תוכן שסועדים כותבים מסונן לפני שהוא מגיע למודל, וניסיונות להוציא את המודל מתפקידו נרשמים ומוגבלים.
8. מה שאין לנו
אין לנו תקן ISO 27001, אין SOC 2 ואין הסמכת PCI-DSS. איננו נדרשים ל-PCI משום שפרטי אשראי אינם עוברים דרכנו כלל. אנחנו כותבים את זה במפורש כדי שלא תניחו אחרת.
9. דיווח על פרצה
מצאתם בעיית אבטחה? נשמח לשמוע לפני שתפרסמו אותה, ונטפל בה מהר. הפרטים בעמוד יצירת הקשר. איננו נוקטים הליכים משפטיים נגד מי שדיווח בתום לב, לא ניזק ולא ניצל את הממצא.
10. אירוע אבטחה
אם ייווצר אירוע שבו נחשף מידע אישי, נודיע למסעדות שנוגעות בדבר, לרשות להגנת הפרטיות כנדרש בתקנות הגנת הפרטיות (אבטחת מידע), התשע"ז-2017, ולנפגעים ככל שהדבר נדרש.