מוצג המסמך של 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>
ברירת המחדל: | אם לא תציינו את הרכיב הזה, או אם מציינים מספר שלם שלילי, המערכת לא אוכפת מגבלה. |
נוכחות: | אופציונלי |
סוג: | מספר שלם |
התייחסות לשגיאות
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
Fault code | HTTP status | Cause | Fix |
---|---|---|---|
steps.jsonthreatprotection.ExecutionFailed |
500 | The JSONThreatProtection policy can throw many different types of ExecutionFailed errors. Most of these errors occur when a specific threshold set in the policy is exceeded. These types of errors include: object entry name length, object entry count, array element count, container depth, string string value length. This error also occurs when the payload contains an invalid JSON object. | build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
This error occurs if the message
variable specified in the <Source> element is either:
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
This error occurs if the <Source> element is set to a variable which
is not of type
message.
|
build |
Deployment errors
None.
Fault variables
These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.
Variables | Where | Example |
---|---|---|
fault.name="fault_name" |
fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "SourceUnavailable" |
jsonattack.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | jsonattack.JTP-SecureRequest.failed = true |
Example error response
{ "fault": { "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Example fault rule
<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) ברמת האפליקציה. כל ההגדרות הן אופציונלי וצריך לבצע בו אופטימיזציה כדי לבצע אופטימיזציה של דרישות השירות ביחס לפוטנציאל נקודות חולשה.