מדיניות RegularExpressionProtection

מדיניות ניתנת להרחבה

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

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

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

דוגמאות

GitHub

בדוגמה של regex-protection ב-GitHub מוסבר איך לזהות מתקפות פוטנציאליות של הזרקת SQL שמופעלות דרך פרמטר שאילתה שעשוי להכיל קוד זדוני בתג <script>. בדוגמה מוסבר גם על שיטה מומלצת להגדרת סטטוס שגיאה כללי של 400 כדי למנוע מהאקרים להשיג מידע שימושי מהתגובה.

הגנה מפני מתקפות שכוללות JavaScript

<RegularExpressionProtection name="JsonPathRegExProtection">
    <Source>request</Source>
    <JSONPayload escapeSlashCharacter="true">
       <JSONPath>
          <Expression>$</Expression>
          <Pattern><![CDATA[ <\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*> ]]></Pattern>
       </JSONPath>
    </JSONPayload>
 </RegularExpressionProtection>

בדוגמה שלמעלה אפשר לראות איך משתמשים במדיניות RegularExpressionProtection כדי להעריך מטען ייעודי (payload) של JSON לצורך התקפות שכוללות JavaScript. באופן ספציפי, התוכן שחולץ על ידי <JSONPath>/<Expression> מוערך בהשוואה לביטוי הרגולרי ב-<JSONPath>/<Pattern>.

אם הביטוי הרגולרי ב-<JSONPath>/<Pattern> כולל תווים שמורים ב-XML (", &, ', <, או >), צריך להוסיף אותו לקטע CDATA (נתוני תווים), כמו שמוצג בדוגמה שלמעלה, או לקודד את התווים השמורים ב-XML: לדוגמה, להחליף את < ב-&lt; ואת > ב-&gt;.

בנוסף, אם הביטוי הרגולרי כולל לוכסנים (/), צריך להגדיר את המאפיין <JSONPayload> escapeSlashCharacter לערך true כדי לבצע escape.

התאמה ללא תלות ברישיות

תרחיש נפוץ לשימוש הוא התאמה לא תלוית-רישיות. דוגמה לאופן שבו אפשר לעשות את זה בביטוי רגולרי באמצעות המבנה (?i). לדוגמה, בדוגמה הזו, הביטויים DELETE, delete ו-Delete יחזירו את הערך True.

<Pattern>[\s]*(?i)((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b))</Pattern>

בדיקות של פרמטרים של טופס

<RegularExpressionProtection name="REP-Formparam">
  <Source>request</Source>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <FormParam name="firstname">
    <Pattern><![CDATA[[-+=$%&]]]></Pattern>
  </FormParam>
  <FormParam name="lastname">
    <Pattern><![CDATA[[-+=$%&]]]></Pattern>
  </FormParam>
</RegularExpressionProtection>

הגדרת המדיניות RegularExpressionProtection תעריך את פרמטרים של טופס לגבי המופע של תווים מיוחדים, בתוך הקבוצה [-+=$%&]. המדיניות הזו תשפיע רק כשהכותרת content-type בבקשה היא application/x-www-form-urlencoded. הגדרת המדיניות משתמשת בקטע CDATA (נתוני תווים) כדי לעטוף את הביטויים הרגולריים, בגלל הנוכחות של התו &, שהוא מיוחד ב-XML.


מידע על המדיניות בנושא הגנה על ביטויים רגולריים

‫Apigee מאפשר להגדיר ביטויים רגולריים שאפשר להעריך ביחס לתנועת נתונים ב-API בזמן ריצה, כדי לזהות איומים נפוצים ברמת התוכן שמתאימים לדפוסים מסוימים.

ביטוי רגולרי, או regex בקיצור, הוא קבוצה של מחרוזות שמציינות דפוס במחרוזת. ביטויים רגולריים מאפשרים להעריך תוכן באופן פרוגרמטי כדי לזהות דפוסים. לדוגמה, אפשר להשתמש בביטויים רגולריים כדי להעריך כתובת אימייל ולוודא שהיא בנויה בצורה נכונה. מידע נוסף זמין במאמר Regular Expressions (ביטויים רגולריים) בסדרת הדרכות Java Tutorials.

השימוש הנפוץ ביותר ב-RegularExpressionProtection הוא הערכה של מטען ייעודי (payload) מסוג JSON ו-XML לצורך זיהוי תוכן זדוני.

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

דוגמאות לתבניות החרגה

צריך לקודד ביטויים רגולריים ב-XML בקובץ התצורה של מדיניות ה-XML. אפשר גם לעיין בדוגמה לשימוש לא יעיל: שימוש בכמתים חמדנים במדיניות RegularExpressionProtection.

שם ביטוי רגולרי
הזרקת SQL
[\s]*((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b))
הזרקת Server-Side Include
<!--#(include|exec|echo|config|printenv)\s+.*

קידוד XML:

&lt;!--#(include|exec|echo|config|printenv)\s+.*
הזרקה של תחביר מקוצר של XPath
(/(@?[\w_?\w:\*]+(\[[^]]+\])*)?)+
החדרת תחביר מורחב של XPath
/?(ancestor(-or-self)?|descendant(-or-self)?|following(-sibling))
החדרה של JavaScript
<\s*script\b[^>]*>[^<]+<\s*/\s*script\s*>

קידוד XML:

&lt;\s*script\b[^&gt;]*&gt;[^&lt;]+&lt;\s*/\s*script\s*&gt;

הגדרת הכותרת Content-Type בבקשה עם מטען ייעודי (payload) מסוג XML או JSON

המטען הייעודי (payload) של מדיניות ההגנה על ביטויים רגולריים יכול לכלול את הרכיבים הבאים:

  • רכיב <XMLPayload>: מציין שצריך לחלץ מידע ממטען ייעודי (payload) של XML ולהעריך אותו מול הביטוי הרגולרי שסופק.

    אם משתמשים ב-<XMLPayload> במדיניות, הכותרת Content-Type של הבקשה צריכה להיות מסוג תוכן XML, כמו application/xml או text/xml.

  • רכיב <JSONPayload>: מציין שצריך לחלץ מידע ממטען ייעודי (payload) של JSON ולהעריך אותו בהתאם לביטוי הרגולרי שסופק.

    אם משתמשים ב-<JSONPayload> במדיניות, הכותרת Content-Type של הבקשה צריכה להיות סוג תוכן JSON כמו application/json.

בדרך כלל, כשמעצבים API, הוא מתוכנן לקבל XML או JSON. עם זאת, יכול להיות תרחיש שבו ה-API קיבל את שניהם. אחר כך תוכלו להגדיר מדיניות הגנה על ביטויים רגולריים שתשתמש גם ברכיב <XMLPayload> וגם ברכיב <JSONPayload>. רק רכיב אחד יחול על בקשה ספציפית על סמך הערך של הכותרת Content-Type.

הפניה לרכיב

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

<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
   <DisplayName>Regular Expression Protection 1</DisplayName>
   <Source>response</Source>
   <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
   <URIPath>
     <Pattern>REGEX PATTERN</Pattern>
     <Pattern>REGEX PATTERN</Pattern>
   </URIPath>
   <QueryParam name="a-query-param">
     <Pattern>REGEX PATTERN</Pattern>
     <Pattern>REGEX PATTERN</Pattern>
   </QueryParam>
   <Header name="a-header">
     <Pattern>REGEX PATTERN</Pattern>
     <Pattern>REGEX PATTERN</Pattern>
   </Header>
   <FormParam name="a-form-param">
     <Pattern>REGEX PATTERN</Pattern>
     <Pattern>REGEX PATTERN</Pattern>
   </FormParam>
   <Variable name="request.content">
     <Pattern>REGEX PATTERN</Pattern>
     <Pattern>REGEX PATTERN</Pattern>
   </Variable>
   <XMLPayload>
     <Namespaces>
       <Namespace prefix="apigee">http://www.apigee.com</Namespace>
     </Namespaces>
     <XPath>
       <Expression>/apigee:Greeting/apigee:User</Expression>
       <Type>string</Type>
       <Pattern>REGEX PATTERN</Pattern>
       <Pattern>REGEX PATTERN</Pattern>
     </XPath>
   </XMLPayload>
   <JSONPayload>
     <JSONPath>
       <Expression>$.store.book[*].author</Expression>
       <Pattern>REGEX PATTERN</Pattern>
       <Pattern>REGEX PATTERN</Pattern>
     </JSONPath>
    </JSONPayload>
</RegularExpressionProtection>

‫<RegularExpressionProtection> מאפיינים

<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">

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

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

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

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

לא רלוונטי חובה
continueOnError

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

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

FALSE אופציונלי
enabled

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

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

TRUE אופציונלי
async

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

FALSE הוצא משימוש

אלמנט <DisplayName>

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

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

לא רלוונטי

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

נוכחות אופציונלי
סוג String

רכיב <Source>

מציין את ההודעה שממנה צריך לחלץ מידע.

אם לא מציינים את הרכיב <Source>, ערך ברירת המחדל הוא message. לדוגמה, <Source>message</Source>. אם המדיניות מוגדרת לערך message, היא משתמשת בהודעת הבקשה כמקור כשהיא מצורפת לתהליך של בקשה. באופן דומה, המדיניות משתמשת בהודעת התגובה כשהיא מצורפת לזרימת תגובה.

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

<Source>response</Source>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: String

אלמנט <IgnoreUnresolvedVariables>

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

אם המדיניות מוגדרת ל-false (ברירת המחדל), המדיניות מחזירה שגיאה כשנתקלים במשתנה שלא ניתן לפתור. אם המדיניות מוגדרת ל-true, המשתנה שלא נפתר מטופל כמחרוזת ריקה (Null).

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
ברירת מחדל: FALSE
נוכחות: אופציונלי
סוג: בוליאני

אלמנט <URIPath>

מציין שצריך לחלץ מידע מנתיב ה-URI של הבקשה ולהעריך אותו בהשוואה לביטויים הרגולריים שסופקו. צריך לספק לפחות רכיב <Pattern> אחד שמציין תבנית של ביטוי רגולרי להתאמה.

<URIPath>
  <Pattern>REGEX PATTERN</Pattern>
  <Pattern>REGEX PATTERN</Pattern>
</URIPath>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: לא רלוונטי

אלמנט <QueryParam>

מציין שצריך לחלץ מידע מפרמטר השאילתה של הבקשה ולהעריך אותו בהתאם לביטויים הרגולריים שסופקו. צריך לספק לפחות רכיב <Pattern> אחד שמציין תבנית של ביטוי רגולרי להתאמה.

<QueryParam name="a-query-param">
  <Pattern>REGEX PATTERN</Pattern>
  <Pattern>REGEX PATTERN</Pattern>
</QueryParam>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: לא רלוונטי

מאפיינים

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

אלמנט <Header>

מציין שצריך לחלץ מידע מכותרות הבקשה והתגובה ולהעריך אותו בהשוואה לביטויים הרגולריים שסופקו. צריך לספק לפחות רכיב <Pattern> אחד שמציין תבנית של ביטוי רגולרי להתאמה.

<Header name="a-header">
  <Pattern>REGEX PATTERN</Pattern>
  <Pattern>REGEX PATTERN</Pattern>
</Header>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: לא רלוונטי

מאפיינים

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

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

לא רלוונטי חובה

רכיב <FormParam>

הפרמטר הזה מציין שצריך לחלץ מידע מפרמטר של טופס בקשה ולהעריך אותו מול הביטויים הרגולריים שסופקו. צריך לספק לפחות רכיב <Pattern> אחד שמציין תבנית של ביטוי רגולרי להתאמה.

<FormParam name="a-form-param">
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</FormParam>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: לא רלוונטי

מאפיינים

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

שם הפרמטר בטופס הבקשה שממנו צריך לחלץ מידע כדי לבצע הערכה מול הביטויים הרגולריים שסופקו.

לא רלוונטי חובה

אלמנט <Variable>

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

<Variable name="request.content">
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</Variable>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: לא רלוונטי

מאפיינים

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

שם המשתנה שממנו צריך לחלץ מידע לצורך הערכה מול הביטויים הרגולריים שצוינו.

לא רלוונטי חובה

אלמנט <XMLPayload>

התג הזה מציין שצריך לחלץ מידע ממטען ייעודי (payload) של XML ולהעריך אותו בהשוואה לביטויים הרגולריים שסופקו.

<XMLPayload>
   <Namespaces>
      <Namespace prefix="apigee">http://www.apigee.com</Namespace>
   </Namespaces>
   <XPath>
      <Expression>/apigee:Greeting/apigee:User</Expression>
      <Type>string</Type>
      <Pattern>REGEX PATTERN</Pattern>
      <Pattern>REGEX PATTERN</Pattern>
   </XPath>
</XMLPayload>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: לא רלוונטי

אלמנט <XMLPayload>/<Namespaces>

מציינים את מרחבי השמות שישמשו להערכת ה-XPath.

<XMLPayload>
   <Namespaces>
      <Namespace prefix="apigee">http://www.apigee.com</Namespace>
   </Namespaces>
   <XPath>
      <Expression>/apigee:Greeting/apigee:User</Expression>
      <Type>string</Type>
      <Pattern>REGEX PATTERN</Pattern>
      <Pattern>REGEX PATTERN</Pattern>
   </XPath>
</XMLPayload>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: String

אלמנט <XMLPayload>/<Namespaces>/<Namespace>

מציין כל מרחב שמות שישמש בהערכת XPath.
<Namespaces>
   <Namespace prefix="apigee">http://www.apigee.com</Namespace>
</Namespaces>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: String

מאפיינים

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

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

לא רלוונטי חובה

רכיב <XMLPayload>/<XPath>

מציינים את ה-XPath שצריך להעריך.
<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: לא רלוונטי

‫<XMLPayload>/<XPath>/<Expression> element

מציינים את ביטוי ה-XPath שהוגדר למשתנה. יש תמיכה רק בביטויי XPath 1.0. לדוגמה, <Expression>/company/employee[@age>=$request.header.age]</Expression> מחזירה פרטים של עובדים שהגיל שלהם גדול או שווה לערך שצוין ב- request.header.age.
<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: String

‫<XMLPayload>/<XPath>/<Type> element

מציין את סוג הנתונים הרצוי בפלט.

בדרך כלל משתמשים בערכים string או nodeset. משתמשים ב-"string" אם בטוחים ששאילתת ה-XPath תחזיר לכל היותר ערך אחד, או אם רוצים לבדוק לכל היותר ערך אחד. אם שאילתת ה-XPath עשויה להחזיר כמה ערכים, צריך לציין 'nodeset' כדי לבדוק את כל הערכים.

לדוגמה, נניח שיש לכם את ביטוי ה-XPath‏ //*/@*. הוא תואם לכל המאפיינים בכל הרכיבים. אם תציינו 'string' בתור Type, מערכת Apigee תכפה את התוצאה של השאילתה הזו למחרוזת אחת. זו תהיה התוצאה של אחד המאפיינים באחד הרכיבים במסמך ה-XML, אבל לא מוגדר איזה מאפיין ואיזה רכיב. לאחר מכן, מערכת Apigee תבצע התאמה של תבנית לערך של המאפיין היחיד הזה. סביר להניח שזה לא מה שאתם רוצים.

לעומת זאת, אם מציינים 'nodeset' כ-Type עבור ביטוי ה-XPath הזה, Apigee מבצע התאמת תבניות לכל אחד מערכי המאפיינים בכל רכיב במסמך ה-XML.

<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
ברירת מחדל: מחרוזת
נוכחות: אופציונלי
סוג: String
ערכים תקינים:

אחת ממילות המפתח האלה: string,‏ boolean,‏ int,‏ long,‏ float,‏ double ו-nodeset.

‫<XMLPayload>/<XPath>/<Pattern> element

המאפיין הזה מגדיר את תבנית הביטוי הרגולרי. אם ביטוי רגולרי ברכיב <Pattern> כולל תווים שמורים ב-XML (", &, ', < או .), צריך לקודד אותו ב-XML לפני שכוללים אותו.

<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
ברירת מחדל: לא רלוונטי
נוכחות: חובה
סוג: String

אלמנט <JSONPayload>

מציין שצריך לחלץ מידע ממטען ייעודי (payload) של JSON ולהעריך אותו בהשוואה לביטויים הרגולריים שסופקו.

<JSONPayload>
   <JSONPath>
      <Expression>$.store.book[*].author</Expression>
      <Pattern>REGEX PATTERN</Pattern>
      <Pattern>REGEX PATTERN</Pattern>
   </JSONPath>
</JSONPayload>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: לא רלוונטי

מאפיינים

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

מגדירים את הערך true כדי להשתמש בתו בריחה (escape) לכל תו לוכסן (/) בביטויים הרגולריים ב-<JSONPath>/<Pattern>.

TRUE אופציונלי

אלמנט <JSONPayload>/<JSONPath>/<Expression>

מציין את ביטוי ה-JSONPath שהוגדר למשתנה.

<JSONPath>
   <Expression>$.store.book[*].author</Expression>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</JSONPath>
ברירת מחדל: לא רלוונטי
נוכחות: אופציונלי
סוג: String

‫<JSONPayload>/<JSONPath>/<Pattern> element

המאפיין הזה מגדיר את תבנית הביטוי הרגולרי. אם ביטוי רגולרי ברכיב <Pattern> כולל תווים שמורים ב-XML (", &, ', < או .), צריך לקודד אותו ב-XML לפני שכוללים אותו.

<JSONPath>
   <Expression>$.store.book[*].author</Expression>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</JSONPath>
ברירת מחדל: לא רלוונטי
נוכחות: חובה
סוג: String

הפניה לשגיאה

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

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

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

קוד שגיאה הודעה
ExecutionFailed Failed to execute the RegularExpressionProtection StepDefinition {0}. Reason: {1}
InstantiationFailed Failed to instantiate the RegularExpressionProtection StepDefinition {0}
NonMessageVariable Variable {0} does not resolve to a Message
SourceMessageNotAvailable {0} message is not available for RegularExpressionProtection StepDefinition {1}
ThreatDetected Regular Expression Threat Detected in {0}: regex: {1} input: {2}
VariableResolutionFailed Failed to resolve variable {0}

שגיאות פריסה

קוד שגיאה הודעה תיקון
CannotBeConvertedToNodeset RegularExpressionProtection {0}: Result of xpath {1} cannot be converted to nodeset. Context {2}
DuplicatePrefix RegularExpressionProtection {0}: Duplicate prefix {1}
EmptyJSONPathExpression RegularExpressionProtection {0}: Empty JSONPath expression
EmptyXPathExpression RegularExpressionProtection {0}: Empty XPath expression
InvalidRegularExpression RegularExpressionProtection {0}: Invalid Regular Expression {1}, Context {2}
JSONPathCompilationFailed RegularExpressionProtection {0}: Failed to compile jsonpath {1}. Context {2}
NONEmptyPrefixMappedToEmptyURI RegularExpressionProtection {0}: Non-empty prefix {1} cannot be mapped to empty uri
NoPatternsToEnforce RegularExpressionProtection {0}: No patterns to enforce in {1}
NothingToEnforce RegularExpressionProtection {0}: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory
XPathCompilationFailed RegularExpressionProtection {0}: Failed to compile xpath {1}. Context {2}

משתני תקלות

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

משתנים כאשר: דוגמה
fault.name="fault_name" fault_name הוא שם התקלה, כפי שמופיע בטבלה שלמעלה. fault.name Matches "ThreatDetected"
regularexpressionprotection.policy_name.failed policy_name הוא השם שהמשתמש נתן למדיניות שגרמה לשגיאה. regularexpressionprotection.Regular-Expressions-Protection-1.failed = true

סכימות

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

מדיניות להגנה מפני איומים ב-JSON

מדיניות הגנה מפני איומים ב-XML