הפרידו מטמון יישום ומטמון HTTP
Redis, Workers KV ומטמוני HTTP אינם חולקים אוטומטית אותן הבטחות. Workers KV משתמש בעקביות בסופו של דבר: כתיבה אינה גלויה מיד בכל מקום. ההנחיות הבאות נוגעות ל־HTTP ואינן מגדירות לבדן מטמון יישום.
| הנחיית תגובת HTTP | משמעות מרכזית | מגבלה |
|---|---|---|
| no-cache | מותר לאחסן, נדרש אימות לפני שימוש חוזר. | אין פירושו איסור אחסון. |
| no-store | אין לאחסן תגובה זו במטמונים. | אינו מוחק אוטומטית עותקים קודמים. |
| private | אין לאחסן במטמון משותף. | אינו כלל אימות זהות. |
| max-age | משך טריות התגובה. | אינו מבטיח עקביות של כל הנתונים. |
בדקו תגובה נכונה לאדם הנכון
- הגדירו וריאציות מפתח לפי משאב, פרמטרים, שפה והרשאות. בדקו שחשבון אינו מקבל תגובה פרטית של אחר.
- הגדירו גיל מרבי, פסילה והתנהגות אחרי שינוי או מחיקה. TTL קצר אינו מבטיח קריאה עקבית מיד.
- בדקו תפוגה בו־זמנית, כשל מטמון וכשל מקור. אחדו רענונים לפי הצורך והגישו תגובה ישנה רק אם כללי העסק מתירים זאת.
מדדו מעבר לשיעור פגיעות המטמון
עקבו אחר השהיה, שגיאות, עומס מקור ותגובות שגויות או ישנות. יתרות, מלאי שמור והרשאות עשויים לדרוש הבטחות שונות מקטלוג ציבורי. מטמון מהיר לא צריך להפוך למקור אמת חלופי לא מבוקר.
מקורות ראשוניים
אחסון במטמון API חייב לשמר החלטות גישה
מטמון תגובה יכול לגרום לשאילתה שגויה להמהרה כאשר מפתחות מתעלמים מהרשאות המבקש. הסיכון עולה כאשר גרף משלב אובייקטים ציבוריים ופרטיים.
- סיווג שדות ציבוריים, פרטיים ותלויי תפקיד לפני אחסון במטמון.
- בדיקת תגובה תחת חשבון אחד ובקשתה תחת חשבון אחר.
- ביטול תוצאות לאחר שינויי הרשאה או נתונים.
מקור ראשוני: OWASP — GraphQL Cheat Sheet. שיטה קשורה: קריאת המדריך המעשי.
למדוד גם את עדכניות המטמון
דוגמה בדיונית: הנתונים אינם מתארים לקוח או תוצאה שנצפתה.
שתי קריאות מהירות, אך אחת עדיין מציגה זמינות ישנה לאחר שהמקור השתנה.
- השוו ערך, גרסה, מקום קריאה וזמן מאז השינוי. בדקו ביטול תוקף, תפוגה וגישה למקור לפי חוזה המערכת.
- הגדירו התיישנות מותרת לכל שימוש ונטרו פערים. זמן תגובה קצר יותר אינו מוכיח עקביות בנתונים המוגשים.
מקור ראשוני: IETF — RFC 9111, HTTP Caching. שיטה קשורה: קריאת המדריך המעשי.
תתי־דומיין נטושים: להסיר CNAME תוך שמירת שליטה
לקשר שמות DNS למשאבים בשליטה ולסגור תלות לפני שחרור שירות.
- תעדו שם, שרשרת CNAME, משאב ספק ואחראי. השוו DNS למלאי החשבון המורשה. שגיאת HTTP, NXDOMAIN או משאב חסר דורשים בדיקה ואינם מוכיחים אפשרות השתלטות; ההגנות משתנות בין ספקים.
- הסירו הפניה או עברו ליעד בשליטה לפני שחרור המשאב. התחשבו ב־TTL הקודם ובמטמונים; בדקו DNS סמכותי וכמה פותרי שמות. שמרו אימותי בעלות נחוצים במקום למחוק כל רשומות TXT.
- בדקו קישורים, הפניות, כתובות חזרה של OAuth, webhooks ודומייני עוגיות. אם המשאב כבר שוחרר, תקנו DNS וחקרו חשיפה בהליך אירוע. התאימו DNS ומשאבים אחרי כל מחיקה.
מקרה קבלה שניתן לשחזר
דוגמה בדיונית: הנתונים אינם מתארים לקוח או תוצאה שנצפתה.
הצגת נתוני המקרה
{
"name": "portal.example",
"cname_present": true,
"resource_deleted": true,
"provider_claimability": "not_verified",
"takeover_observed": false,
"expected": "remove_or_replace_mapping_and_review_exposure"
}החלטה צפויה
דוגמה בדיונית: portal.example מפנה למשאב שנמחק. הסירו CNAME או השתמשו ביעד בשליטה; חוסר משאב לבדו אינו מוכיח השתלטות צד שלישי.
האם דף שגיאה מוכיח אפשרות השתלטות?
לא. אשרו מצב משאב וכללי שמירת שם או אימות בעלות אצל הספק. אל תתפסו משאב כדי להדגים סיכון.
מקור ראשוני: Microsoft — Prevent dangling DNS entries. שיטה קשורה: קריאת המדריך המעשי.
ETag, מטמון HTTP ועדכונים מקבילים
הערות המקורות המפורטות זמינות באנגלית במהדורה זו.
Revalidation does not replace cache isolation
A matching If-None-Match can justify 304 for the selected representation after access checks. It does not by itself select the correct user variant.
- Separate variant selection, authorisation and validator comparison.
- Test weak and strong tags with If-None-Match: the comparison is weak.
- Read no-cache as validation before reuse, rather than no-store.
Explore ETag comparisons and the simulator →
References reviewed · RFC 9110 · §13 · RFC 9111 · RFC 6585 · §3
GraphQL: שגיאות, רשימות ונתונים חלקיים
הערות המקורות המפורטות זמינות באנגלית במהדורה זו.
GraphQL result: follow the error path
Aliases belong to the result; list indices start at zero. These details determine where a client should flag missing data.
- Compare absent data, partial data and data: null.
- Keep the original path even when a parent becomes null.
- Test permissions, quotas and interface states separately.
Explore GraphQL responses and nullability →
GraphQL Specification · September 2025 · Published edition · September 2025
