משאבים · 37

אבטחת API של GraphQL: הרשאה, עלות שאילתה וראיות

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

מעודכן · 2 min

ספרים על האינטרנט וטכנולוגיה במדף ספרייה איור · סצנה בדיונית

מה מדריך זה עוזר להשיג

  • מיפוי הסכימה החשופה
  • מימוש הרשאות
  • עלות שאילתה כבולה
  • אימות דחיות

בדיקה מהירה

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

שיטה שלב אחר שלב

  1. 1

    פעולות מלאי

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

    תוצר: מטריצת פעולה, תפקיד, אובייקט ושדות.

  2. 2

    בדיקת כל החלטת גישה

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

    תוצר: מקרים מותרים ונדחים הניתנים לשחזור.

  3. 3

    עבודת שרת כבול

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

    תוצר: מדיניות עלויות וקבוצת שאילתות יריבות.

  4. 4

    צמצום חשיפה מיותרת

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

    תוצר: סקירת תצורה ציבורית ותגובות לשגיאות.

  5. 5

    התבוננות באיפוק

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

    תוצר: לוח מחוונים והליך חקירה.

  6. 6

    הפעלה חוזרת לאחר שינוי

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

    תוצר: תוצאת רגרסיה והחלטת שחרור.

מדדי ניהול

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

טעויות נפוצות

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

שאלות נפוצות

האם GraphQL מסיר הרשאת API רגילה?

לא. כל גישה לאובייקט ולשדה עדיין זקוקה להחלטה המבוססת על זהות והקשר.

האם השבתת התבוננות פנימית מספיקה?

לא. זה עשוי להפחית את חשיפת הסכימה אך לא לתקן את עלות הגישה או השאילתה.

האם מגבלת עומק מספיקה?

לא. כינויים, רוחב, רשימות ועלות ספציפית לשדה גם הם חשובים.

הפניות רשמיות

הפניות תומכות בשיטה. התאימו את הבדיקות להקשר שלכם; הן אינן הסמכה. כותרות הפניות ומסמכי המקור המקוריים עשויים להיות בשפה אחרת.