מדיניות JSONThreatProtection

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

מה

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

סרטון: אפשר לצפות בסרטון קצר עם מידע נוסף על האופן שבו המדיניות JSONThreatProtection מאפשרת לאבטח ממשקי API מפני התקפות ברמת התוכן.

סרטון: מומלץ לצפות בסרטון הקצר הזה על פלטפורמת Apigee Cross-cloud API.

הפניה לרכיב

בהפניה לרכיב מתוארים הרכיבים והמאפיינים של מדיניות JSONThreatProtection.

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
   <DisplayName>JSONThreatProtection 1</DisplayName>
   <ArrayElementCount>20</ArrayElementCount>
   <ContainerDepth>10</ContainerDepth>
   <ObjectEntryCount>15</ObjectEntryCount>
   <ObjectEntryNameLength>50</ObjectEntryNameLength>
   <Source>request</Source>
   <StringValueLength>500</StringValueLength>
</JSONThreatProtection>

מאפייני <JSONThreatProtection>

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> 

בטבלה הבאה מפורטים המאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:

מאפיין התיאור ברירת המחדל נוכחות
name

השם הפנימי של המדיניות. הערך של המאפיין name יכול להכיל אותיות, מספרים, רווחים, מקפים, קווים תחתונים ונקודות. הערך יכול להיות באורך של עד 255 תווים.

אפשר להשתמש באלמנט <DisplayName> כדי להוסיף למדיניות בכלי לעריכת שרת ה-proxy לניהול ממשק משתמש עם שם בשפה טבעית אחרת.

לא רלוונטי נדרש
continueOnError

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

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

false אופציונלי
enabled

צריך להגדיר את הערך true כדי לאכוף את המדיניות.

צריך להגדיר את הערך false כדי להשבית את המדיניות. המדיניות לא תיאכף גם אם היא תישאר מצורפת לזרימה.

true אופציונלי
async

המאפיין הזה הוצא משימוש.

false הוצא משימוש

רכיב <DisplayName>

יש להשתמש במאפיין הזה בנוסף למאפיין name כדי להוסיף למדיניות בכלי לעריכת שרת ה-proxy לניהול ממשק משתמש עם שם אחר בשפה טבעית.

<DisplayName>Policy Display Name</DisplayName>
ברירת המחדל

לא רלוונטי

אם משמיטים את הרכיב הזה, המערכת משתמשת בערך של מאפיין name של המדיניות.

נוכחות אופציונלי
תיאור מחרוזת

רכיב <ArrayElementCount>

מציינת את מספר הרכיבים המקסימלי המותר במערך.

<ArrayElementCount>20</ArrayElementCount>
ברירת מחדל: אם לא מציינים את הרכיב הזה, או אם מציינים מספר שלם שלילי, המערכת לא אוכפת את המגבלה.
נוכחות: אופציונלי
סוג: מספר שלם

רכיב <ContainerDepth>

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

<ContainerDepth>10</ContainerDepth>
ברירת מחדל: אם לא מציינים את הרכיב הזה, או אם מציינים מספר שלם שלילי, המערכת לא אוכפת מגבלה כלשהי.
נוכחות: אופציונלי
סוג: מספר שלם

רכיב <ObjectEntryCount>

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

<ObjectEntryCount>15</ObjectEntryCount>
ברירת מחדל: אם לא מציינים את הרכיב הזה, או אם מציינים מספר שלם שלילי, המערכת לא אוכפת מגבלה כלשהי.
נוכחות: אופציונלי
סוג: מספר שלם

רכיב <ObjectEntryNameLength>

מציינת את אורך המחרוזת המקסימלי המותר לשם מאפיין בתוך אובייקט.

<ObjectEntryNameLength>50</ObjectEntryNameLength>
ברירת מחדל: אם לא מציינים את הרכיב הזה, או אם מציינים מספר שלם שלילי, המערכת לא אוכפת את המגבלה.
נוכחות: אופציונלי
סוג: מספר שלם

רכיב <Source>

הודעה שיש לבדוק אם יש תקיפות של מטען ייעודי (payload) של JSON. בדרך כלל הערך הזה מוגדר כ-request, כי בדרך כלל צריך לאמת בקשות נכנסות מאפליקציות של לקוח. אם הערך שמוגדר הוא message, הרכיב הזה יבצע הערכה אוטומטית של הודעת הבקשה כשהיא תצורף לתהליך הבקשה, ואת הודעת התגובה כאשר היא תצורף לתהליך התגובה.

<Source>request</Source>
ברירת מחדל: בקשה
נוכחות: אופציונלי
סוג:

מחרוזת.

ערכים חוקיים: בקשה, תשובה או הודעה.

רכיב <StringValueLength>

מציינת את האורך המקסימלי המותר לערך מחרוזת.

<StringValueLength>500</StringValueLength>
ברירת מחדל: אם לא מציינים את הרכיב הזה, או אם מציינים מספר שלם שלילי, המערכת לא אוכפת את המגבלה.
נוכחות: אופציונלי
סוג: מספר שלם

הפניה לשגיאות

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

שגיאות בזמן ריצה

השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.

קוד שגיאה סטטוס HTTP סיבה תיקון
steps.jsonthreatprotection.ExecutionFailed 500 המדיניות JSONThreatProtection עלולה לגרום להרבה סוגים שונים של שגיאות Executionנכשל. רוב השגיאות האלה מתרחשות כאשר קיימת חריגה מסף מסוים שהוגדר במדיניות. סוגי השגיאות האלה כוללים: אורך שם רשומת האובייקט, מספר ערכי האובייקט, ספירת רכיבי המערך, עומק הקונטיינר, אורך ערך מחרוזת המחרוזת. השגיאה הזו מתרחשת גם כשהמטען הייעודי (payload) מכיל אובייקט JSON לא חוקי.
steps.jsonthreatprotection.SourceUnavailable 500 השגיאה הזו מתרחשת אם המשתנה message שצוין ברכיב <Source> הוא:
  • לא חלה על המדיניות (לא זמינה בתהליך הספציפי שבו המדיניות מיושמת)
  • אינו אחד מהערכים החוקיים request, response, או message
steps.jsonthreatprotection.NonMessageVariable 500 השגיאה הזו מופיעה אם הרכיב <Source> מוגדר למשתנה מסוג שאינו message.

שגיאות בפריסה

ללא.

משתני שבר

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

משתנים מיקום דוגמה
fault.name="fault_name" fault_name הוא שם התקלה, כפי שמפורט בטבלה שגיאות זמן ריצה שלמעלה. שם הטעות הוא החלק האחרון בקוד השגיאה. fault.name Matches "SourceUnavailable"
jsonattack.policy_name.failed policy_name הוא השם שצוין על ידי המשתמש של המדיניות שגרמה לשגיאה. jsonattack.JTP-SecureRequest.failed = true

דוגמה לשגיאה

{
  "fault": {
    "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2",
    "detail": {
      "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
    }
  }
}

דוגמה לכלל שגיאה

<FaultRule name="JSONThreatProtection Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ExecutionFailed") </Condition>
    </Step>
    <Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>

סכימות

הערות על שימוש

בדומה לשירותים מבוססי XML, ממשקי API שתומכים בסימון אובייקטים של JavaScript (JSON) חשופים להתקפות ברמת התוכן. התקפות JSON פשוטות מנסות להשתמש במבנים שמציפים את מנתחי JSON כדי לקרוס שירות ולגרום להתקפות מניעת שירות (DoS) ברמת האפליקציה. כל ההגדרות הן אופציונליות, וצריך לעדכן אותן כדי לשפר את דרישות השירות כנגד נקודות חולשה פוטנציאליות.

נושאים קשורים

מדיניות JSONtoXML

מדיניות XMLThreatProtection

המדיניות בנושא regularExpressionProtection