מדיניות JSONThreatProtection

אתם צופים במסמכי התיעוד של Apigee Edge.
כדאי לעיין במסמכי התיעוד של Apigee X.
מידע

מה

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

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

סרטון: כדאי לצפות בסרטון הקצר הזה על פלטפורמת ה-API של Apigee בענן.

הפניה לרכיב

ההפניה לרכיב מתארת את הרכיבים והמאפיינים של מדיניות 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 הוצא משימוש

&lt;DisplayName&gt; רכיב

צריך להשתמש בנוסף למאפיין 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>
ברירת מחדל: בקשה
נוכחות: אופציונלי
סוג:

מחרוזת.

הערכים האפשריים: request, response או message.

אלמנט <StringValueLength>

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

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

הפניה לשגיאה

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

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

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

קוד תקלה סטטוס HTTP סיבה תיקון
steps.jsonthreatprotection.ExecutionFailed 500 מדיניות JSONThreatProtection יכולה לגרום לסוגים שונים של שגיאות ביצוע שנכשלו. רוב השגיאות האלה מתרחשות כשחורגים מסף מסוים שנקבע במדיניות. האלה סוגי שגיאות כוללים: אורך שם רשומת האובייקט, מספר רשומות של אובייקטים, מספר רכיבי המערך, עומק קונטיינר, אורך ערך מחרוזת המחרוזת. השגיאה הזו מתרחשת גם כשהמטען הייעודי (Payload) מכיל אובייקט JSON לא תקין.
steps.jsonthreatprotection.SourceUnavailable 500 השגיאה הזו מתקבלת אם ההודעה המשתנה שמצוין ברכיב <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 שתומכים ב-JSON (‏JavaScript Object Notation) חשופים למתקפות ברמת התוכן. במתקפות JSON פשוטות מנסים להשתמש במבנים שמעמיסים על מנתחי JSON כדי להפיל שירות ולגרום למתקפות מניעת שירות ברמת האפליקציה. כל ההגדרות הן אופציונליות, וצריך להתאים אותן כדי לבצע אופטימיזציה של דרישות השירות בהתאם לפגיעויות פוטנציאליות.

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

מדיניות JSONtoXML

מדיניות XMLThreatProtection

מדיניות RegularExpressionProtection