מדיניות 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>

&lt;JSONThreatProtection&gt; מאפיינים

<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 של המדיניות הוא בשימוש.

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

&lt;ArrayElementCount&gt; רכיב

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

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

&lt;ContainerDepth&gt; רכיב

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

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

&lt;ObjectEntryCount&gt; רכיב

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

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

&lt;ObjectEntryNameLength&gt; רכיב

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

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

&lt;Source&gt; רכיב

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

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

מחרוזת.

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

&lt;StringValueLength&gt; רכיב

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

<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 שתומכים בסימון אובייקטים של JavaScript (JSON) פגיעים ל התקפות ברמת התוכן. התקפות JSON פשוטות מנסות להשתמש במבנים שמוצפים על מנתחי JSON כדי לקרוס שירות ולגרום למתקפות של מניעת שירות (DoS) ברמת האפליקציה. כל ההגדרות הן אופציונלי וצריך לבצע בו אופטימיזציה כדי לבצע אופטימיזציה של דרישות השירות ביחס לפוטנציאל נקודות חולשה.

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

מדיניות JSONtoXML

מדיניות XMLThreatProtection

המדיניות regularExpressionProtection