מוצג המסמך של 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 |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
צריך להגדיר את הערך יש להגדיר ל- |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
<DisplayName> רכיב
צריך להשתמש בנוסף למאפיין name
כדי להוסיף תווית למדיניות
עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, הערך של המאפיין |
---|---|
נוכחות | אופציונלי |
סוג | מחרוזת |
<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 יכולה לגרום לסוגים שונים של שגיאות ביצוע שנכשלו. רוב השגיאות האלה מתרחשות כשחורגים מסף מסוים שנקבע במדיניות. האלה סוגי שגיאות כוללים: אורך שם רשומת האובייקט, מספר רשומות של אובייקטים, מספר רכיבי המערך, עומק קונטיינר, אורך ערך מחרוזת המחרוזת. השגיאה הזו מתרחשת גם כשהמטען הייעודי (Payload) מכיל אובייקט JSON לא תקין. | build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
השגיאה הזו מתקבלת אם ההודעה
המשתנה שמצוין ברכיב <Source> הוא:
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
השגיאה הזו מתקבלת אם הרכיב <Source> מוגדר למשתנה
אינו מסוג
message.
|
build |
שגיאות פריסה
ללא.
משתני כשל
המשתנים האלה מוגדרים כשהמדיניות הזו גורמת לשגיאה. מידע נוסף זמין במאמר מה צריך לדעת? על שגיאות שקשורות למדיניות.
משתנים | איפה | דוגמה |
---|---|---|
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) ברמת האפליקציה. כל ההגדרות הן אופציונלי וצריך לבצע בו אופטימיזציה כדי לבצע אופטימיזציה של דרישות השירות ביחס לפוטנציאל נקודות חולשה.