นโยบาย RegularExpressionProtection

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

อะไร

ดึงข้อมูลจากข้อความ (เช่น เส้นทาง URI, พารามิเตอร์การค้นหา, ส่วนหัว, พารามิเตอร์แบบฟอร์ม, ตัวแปร, เพย์โหลด XML หรือเพย์โหลด JSON) และประเมินเนื้อหานั้นเทียบกับปกติที่กำหนดไว้ล่วงหน้า นิพจน์ ถ้านิพจน์ทั่วไปที่ระบุมีค่าเป็น "จริง" ข้อความจะถือว่าเป็น และถูกปฏิเสธ

วิดีโอ

ดูข้อมูลเพิ่มเติมเกี่ยวกับนโยบายการป้องกันนิพจน์ทั่วไปในวิดีโอต่อไปนี้

วิดีโอ คำอธิบาย
การปกป้อง ต่อการโจมตีการแทรก SQL (New Edge) ป้องกันการโจมตีการแทรก SQL โดยใช้นโยบายการป้องกันนิพจน์ทั่วไปใน UI ประสบการณ์ใหม่ของ Edge
การปกป้อง ต่อการโจมตีการแทรก SQL (Classic Edge) ป้องกันการโจมตีการแทรก SQL โดยใช้นโยบายการป้องกันนิพจน์ทั่วไปใน แบบคลาสสิกของ Edge UI

ตัวอย่าง

GitHub

การตั้งค่า regex-Protection ตัวอย่างใน GitHub จะแสดงวิธีดักจับการโจมตีด้วยการแทรก SQL ที่อาจเกิดขึ้นผ่าน พารามิเตอร์การค้นหา นอกจากนี้ ในตัวอย่างนี้ยังแสดงแนวทางปฏิบัติที่ดีในการตั้งค่า 400 ทั่วไป เพื่อป้องกันไม่ให้แฮ็กเกอร์ได้รับข้อมูลที่เป็นประโยชน์จากการตอบสนอง

JavaScript มีการป้องกันการโจมตี

<RegularExpressionProtection name="JsonPathRegExProtection">
    <DisplayName>Regular Expression Protection 1</DisplayName>
    <Source>request</Source>
    <JSONPayload escapeSlashCharacter="true">
       <JSONPath>
          <Expression>$</Expression>
          <Pattern>&lt;\s*script\b[^&gt;]*&gt;[^&lt;]+&lt;\s*\/\s*script\s*&gt;
          </Pattern>
          <Pattern>n\s*\\\\\s*slash</Pattern>
          <Pattern>n\s*\/\s*slash</Pattern>
          <Pattern>n\s*\\"\s*quotes</Pattern>
          <Pattern>n\s*\\b\s*space</Pattern>
          <Pattern>n\s*\\f\s*forwardfeed</Pattern>
          <Pattern>n\s*\\n\s*newline</Pattern>
          <Pattern>n\s*\\r\s*carria</Pattern>
          <Pattern>n\s*\\t\s*tab</Pattern>
          <Pattern>n\s*\\uFFFF\s*hex</Pattern>
       </JSONPath>
    </JSONPayload>
 </RegularExpressionProtection>

ตัวอย่างด้านบนแสดงวิธีใช้นโยบาย regularExpressionProtection ในการประเมิน เพย์โหลด JSON สำหรับ JavaScript รวมถึงการโจมตี โดยเฉพาะอย่างยิ่งเนื้อหาที่ดึงมาจาก <JSONPath>/<Expression> ได้รับการประเมินตาม นิพจน์ทั่วไปใน <JSONPath>/<Pattern>

หากนิพจน์ทั่วไปใน <JSONPath>/<Pattern> มีอักขระที่สงวน XML ไว้ (", &, ', < หรือ .) คุณต้องเข้ารหัส XML ก่อนที่จะรวมไว้ใน XML ของนโยบาย ใหม่ ตัวอย่างเช่น ในตัวอย่างข้างต้น นิพจน์ทั่วไป <\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*> ได้รับการ เข้ารหัส XML เป็น &lt;\s*script\b[^&gt;]*&gt;[^&lt;]+&lt;\s*\/\s*script\s*&gt;

นอกจากนี้ หากนิพจน์ทั่วไปมีเครื่องหมายทับ (/) คุณต้องกำหนดเป็นอักขระหลีก โดยการตั้งค่าescapeSlashCharacter <JSONPayload> เป็น true

การจับคู่ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่

การจับคู่ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เป็น Use Case ทั่วไป ลองดูตัวอย่างวิธีที่คุณทำ ดำเนินการดังกล่าวในนิพจน์ทั่วไปโดยใช้โครงสร้าง (?i) ด้วยวิธีนี้ ตัวอย่างเช่น DELETE, delete และ Delete จะ ประเมินให้เป็น "จริง"

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

เกี่ยวกับนโยบายการป้องกันนิพจน์ทั่วไป

Apigee Edge ช่วยให้คุณสามารถกำหนดค่านิพจน์ทั่วไปที่สามารถ ประเมินจากการรับส่งข้อมูล API ระหว่างรันไทม์เพื่อระบุภัยคุกคามระดับเนื้อหาที่พบบ่อยที่ตามมา รูปแบบบางอย่าง

นิพจน์ทั่วไป หรือ regex คือชุดของสตริง ที่ระบุรูปแบบในสตริง นิพจน์ทั่วไปช่วยให้เนื้อหาสามารถเขียนโปรแกรมได้ ประเมินรูปแบบ คุณใช้นิพจน์ทั่วไปได้ เช่น เพื่อประเมินอีเมล เพื่อให้แน่ใจว่าโครงสร้างเป็นไปอย่างเหมาะสม ดูข้อมูลเพิ่มเติมได้ที่ปกติ นิพจน์ในบทแนะนำ Java

การใช้งานทั่วไปของ regularExpressionProtection คือการประเมิน JSON และ XML ที่มีเนื้อหาที่เป็นอันตราย

ไม่มีนิพจน์ทั่วไปสามารถกำจัดการโจมตีตามเนื้อหาทั้งหมด และกลไกหลายอย่างควร รวมกันเพื่อให้ป้องกันได้ในระดับลึก ส่วนนี้จะอธิบายรูปแบบที่แนะนำสำหรับ การยกเว้นเนื้อหา

ตัวอย่างการยกเว้น รูปแบบ

นิพจน์ทั่วไปต้องเข้ารหัส XML ในไฟล์การกำหนดค่า XML ของนโยบาย

ชื่อ นิพจน์ทั่วไป
แทรก SQL
[\s]*((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b))
การแทรกการรวมฝั่งเซิร์ฟเวอร์
<!--#(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;
การแทรกข้อยกเว้นของ Java
.*?Exception in thread.*

ตั้งค่าส่วนหัว Content-Type ในคำขอที่มีเพย์โหลด XML หรือ JSON

เพย์โหลดของนโยบายการป้องกันนิพจน์ทั่วไปอาจมีสิ่งต่อไปนี้ องค์ประกอบ:

  • องค์ประกอบ <XMLPayload>: ระบุว่าต้องดึงข้อมูลจาก เพย์โหลด XML และประเมินด้วยนิพจน์ทั่วไปที่ระบุ

    หากคุณใช้ <XMLPayload> ในนโยบาย ค่า ส่วนหัวของคำขอ Content-Type ต้องเป็นประเภทเนื้อหา XML เช่น application/xml หรือ text/xml

  • องค์ประกอบ <JSONPayload>: ระบุว่าต้องดึงข้อมูล จากเพย์โหลด JSON และประเมินด้วยนิพจน์ทั่วไปที่ระบุ

    หากคุณใช้ <JSONPayload> ในนโยบาย ค่า ส่วนหัวของคำขอ Content-Type ต้องเป็นประเภทเนื้อหา JSON เช่น application/json

โดยปกติแล้ว คุณออกแบบ API ให้ยอมรับ XML หรือ JSON อย่างไรก็ตาม อาจมีสถานการณ์ ที่ API ยอมรับทั้ง 2 แบบ จากนั้นคุณสามารถกำหนดนโยบายการป้องกันนิพจน์ทั่วไป ที่ใช้ทั้งองค์ประกอบ <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>

&lt;RegularExpressionProtection&gt; แอตทริบิวต์

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

ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
name

ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ name สามารถ ประกอบด้วยตัวอักษร ตัวเลข การเว้นวรรค ขีดกลางสั้น ขีดล่าง และจุด ค่านี้ไม่สามารถ เกิน 255 อักขระ

(ไม่บังคับ) ใช้องค์ประกอบ <DisplayName> เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

ไม่มี ต้องระบุ
continueOnError

ตั้งค่าเป็น false เพื่อแสดงผลข้อผิดพลาดเมื่อนโยบายล้มเหลว เป็นเรื่องปกติ พฤติกรรมสำหรับนโยบายส่วนใหญ่

ตั้งค่าเป็น true เพื่อให้ดำเนินการตามขั้นตอนได้อย่างต่อเนื่องแม้จะมีนโยบายแล้วก็ตาม ล้มเหลว

เท็จ ไม่บังคับ
enabled

ตั้งค่าเป็น true เพื่อบังคับใช้นโยบาย

ตั้งค่าเป็น false เพื่อปิดนโยบาย นโยบายจะไม่ บังคับใช้ แม้ว่าจะยังคงแนบกับขั้นตอน

จริง ไม่บังคับ
async

แอตทริบิวต์นี้เลิกใช้งานแล้ว

เท็จ เลิกใช้

&lt;DisplayName&gt; องค์ประกอบ

ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน

<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น

ไม่มี

หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ name ของนโยบายจะเป็น

การมีบุคคลอยู่ ไม่บังคับ
ประเภท สตริง

&lt;Source&gt; องค์ประกอบ

ระบุข้อความที่ต้องดึงข้อมูล

หากละเว้นองค์ประกอบ <Source> ค่าเริ่มต้นจะเป็น message เช่น <Source>message</Source> เมื่อตั้งค่าเป็น คุณ message นโยบายนี้จะใช้ข้อความคำขอเป็นแหล่งที่มาเมื่อแนบมากับคำขอ ในทํานองเดียวกัน นโยบายจะใช้ข้อความตอบกลับเมื่อแนบไปกับขั้นตอนการตอบกลับ

หากแก้ไขข้อความต้นฉบับไม่ได้หรือหากเปลี่ยนเป็นประเภทที่ไม่ใช่ข้อความแล้ว นโยบาย แสดงผลข้อผิดพลาด

<Source>response</Source>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: สตริง

&lt;IgnoreUnresolvedVariables&gt; องค์ประกอบ

กำหนดว่านโยบายจะแสดงข้อผิดพลาดหรือไม่เมื่อพบตัวแปรที่ แก้ไขไม่ได้

หากตั้งค่าเป็น false (ค่าเริ่มต้น) นโยบายจะแสดงข้อผิดพลาดเมื่อแก้ไขไม่ได้ พบตัวแปร หากตั้งค่าเป็น true ระบบจะถือว่าตัวแปรที่ยังไม่ได้แก้ไขเป็นค่าว่าง string (Null)

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
ค่าเริ่มต้น: เท็จ
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: บูลีน

&lt;URIPath&gt; องค์ประกอบ

ระบุว่าต้องดึงข้อมูลจากเส้นทาง URI คำขอและประเมิน เทียบกับนิพจน์ทั่วไปที่ให้ไว้ คุณต้องระบุอย่างน้อย 1 รายการ องค์ประกอบ <Pattern> ที่ระบุรูปแบบนิพจน์ทั่วไปที่จะจับคู่

<URIPath>
  <Pattern>REGEX PATTERN</Pattern>
  <Pattern>REGEX PATTERN</Pattern>
</URIPath>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: ไม่มี

&lt;QueryParam&gt; องค์ประกอบ

ระบุว่าต้องดึงข้อมูลจากพารามิเตอร์การค้นหาคำขอ ประเมินตามนิพจน์ทั่วไปที่ระบุ คุณต้องระบุอย่างน้อย 1 รายการ องค์ประกอบ <Pattern> ที่ระบุรูปแบบนิพจน์ทั่วไปที่จะจับคู่

<QueryParam name="a-query-param">
  <Pattern>REGEX PATTERN</Pattern>
  <Pattern>REGEX PATTERN</Pattern>
</QueryParam>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: ไม่มี

Attributes

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
ชื่อ ชื่อพารามิเตอร์การค้นหาคำขอที่ต้องดึงข้อมูลมา การประเมินเทียบกับนิพจน์ทั่วไปที่ให้ไว้ ไม่มี ต้องระบุ

&lt;Header&gt; องค์ประกอบ

ระบุว่าต้องดึงข้อมูลจากส่วนหัวคำขอและส่วนหัวการตอบกลับ ประเมินตามนิพจน์ทั่วไปที่ระบุ คุณต้องระบุอย่างน้อย 1 รายการ องค์ประกอบ <Pattern> ที่ระบุรูปแบบนิพจน์ทั่วไปที่จะจับคู่

<Header name="a-header">
  <Pattern>REGEX PATTERN</Pattern>
  <Pattern>REGEX PATTERN</Pattern>
</Header>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: ไม่มี

Attributes

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
ชื่อ

ชื่อคำขอและส่วนหัวการตอบกลับที่ต้องดึงข้อมูล เพื่อการประเมินเทียบกับนิพจน์ทั่วไปที่ให้ไว้

ไม่มี ต้องระบุ

&lt;FormParam&gt; องค์ประกอบ

ระบุว่าจำเป็นต้องดึงข้อมูลจากพารามิเตอร์แบบฟอร์มคำขอและประเมิน เทียบกับนิพจน์ทั่วไปที่ให้ไว้ คุณต้องระบุอย่างน้อย 1 รายการ องค์ประกอบ <Pattern> ที่ระบุรูปแบบนิพจน์ทั่วไปที่จะจับคู่

<FormParam name="a-form-param">
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</FormParam>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: ไม่มี

Attributes

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
ชื่อ

ชื่อพารามิเตอร์ของแบบฟอร์มคำขอที่ต้องดึงข้อมูล การประเมินเทียบกับนิพจน์ทั่วไปที่ให้ไว้

ไม่มี ต้องระบุ

&lt;Variable&gt; องค์ประกอบ

ระบุว่าต้องดึงข้อมูลจากตัวแปรที่กำหนดและประเมินตาม นิพจน์ทั่วไปที่มีให้

<Variable name="request.content">
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</Variable>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: ไม่มี

Attributes

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
ชื่อ

ชื่อของตัวแปรที่ต้องดึงข้อมูลมาประเมิน เทียบกับนิพจน์ทั่วไปที่ให้ไว้

ไม่มี ต้องระบุ

&lt;XMLPayload&gt; องค์ประกอบ

ระบุว่าต้องดึงข้อมูลจากเพย์โหลด 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>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: ไม่มี

&lt;XMLPayload&gt;/&lt;Namespaces&gt; องค์ประกอบ

ระบุเนมสเปซที่จะใช้ในการประเมินค่า 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>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: สตริง

&lt;XMLPayload&gt;/&lt;Namespaces&gt;/&lt;Namespace&gt; องค์ประกอบ

ระบุเนมสเปซแต่ละรายการเพื่อ สามารถใช้ในการประเมิน XPath
<Namespaces>
   <Namespace prefix="apigee">http://www.apigee.com</Namespace>
</Namespaces>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: สตริง

Attributes

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
คำนำหน้า

ระบุคำนำหน้าเพื่อช่วยให้เนมสเปซที่ระบุมีคุณสมบัติเหมาะสม

ไม่มี ต้องระบุ

&lt;XMLPayload&gt;/&lt;XPath&gt; องค์ประกอบ

ระบุ XPath ที่จะประเมินได้
<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: ไม่มี

&lt;XMLPayload&gt;/&lt;XPath&gt;/&lt;Expression&gt; องค์ประกอบ

ระบุนิพจน์ 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>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: สตริง

&lt;XMLPayload&gt;/&lt;XPath&gt;/&lt;Type&gt; องค์ประกอบ

ระบุประเภทข้อมูล
<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
ค่าเริ่มต้น: สตริง
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: สตริง
ค่าที่ใช้ได้มีดังนี้

สตริง ค่าที่ถูกต้อง ได้แก่ string, boolean, int, long, float, double และ nodeset

&lt;XMLPayload&gt;/&lt;XPath&gt;/&lt;Pattern&gt; องค์ประกอบ

กำหนดรูปแบบนิพจน์ทั่วไป หากนิพจน์ทั่วไปใน องค์ประกอบ <Pattern> ของคุณมีอักขระที่สงวน XML (", &, ', < หรือ .) คุณต้องเข้ารหัส XML ก่อนที่จะใส่

<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ต้องระบุ
ประเภท: สตริง

&lt;JSONPayload&gt; องค์ประกอบ

ระบุว่าต้องดึงข้อมูลจากเพย์โหลด JSON และประเมินด้วยฟังก์ชัน แสดงนิพจน์ทั่วไปแล้ว

<JSONPayload>
   <JSONPath>
      <Expression>$.store.book[*].author</Expression>
      <Pattern>REGEX PATTERN</Pattern>
      <Pattern>REGEX PATTERN</Pattern>
   </JSONPath>
</JSONPayload>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: ไม่มี

Attributes

แอตทริบิวต์ คำอธิบาย ค่าเริ่มต้น การมีบุคคลอยู่
escapeSlashCharacter

ตั้งค่าเป็น true เพื่อหลีกอักขระเครื่องหมายทับ (/) ในอักขระปกติ นิพจน์ใน <JSONPath>/<Pattern>

จริง ไม่บังคับ

&lt;JSONPayload&gt;/&lt;JSONPath&gt;/&lt;Expression&gt; องค์ประกอบ

ระบุนิพจน์ JSONPath ที่กำหนดไว้สำหรับตัวแปร

<JSONPath>
   <Expression>$.store.book[*].author</Expression>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</JSONPath>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ไม่บังคับ
ประเภท: สตริง

&lt;JSONPayload&gt;/&lt;JSONPath&gt;/&lt;Pattern&gt; องค์ประกอบ

กำหนดรูปแบบนิพจน์ทั่วไป หากนิพจน์ทั่วไปใน องค์ประกอบ <Pattern> มีอักขระที่สงวน XML (", &, ', < หรือ .) คุณต้องเข้ารหัส XML ก่อนที่จะใส่

<JSONPath>
   <Expression>$.store.book[*].author</Expression>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</JSONPath>
ค่าเริ่มต้น: ไม่มี
การตรวจหาบุคคล: ต้องระบุ
ประเภท: สตริง

ข้อมูลอ้างอิงข้อผิดพลาด

ส่วนนี้อธิบายรหัสข้อผิดพลาดและข้อความที่แสดงผลและตัวแปรความผิดพลาดที่ Edge กำหนดเมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบ หากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด หากต้องการบันทึกข้อผิดพลาดและเพิ่มข้อผิดพลาดที่กำหนดเอง ให้ตั้งค่าแอตทริบิวต์ continueOnError="true" ในองค์ประกอบรูทของนโยบาย ดูข้อมูลเพิ่มเติมได้ที่ สิ่งที่คุณจำเป็นต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด

ข้อผิดพลาดที่แสดงผลจากนโยบาย Edge มีรูปแบบที่สอดคล้องกันตามที่อธิบายไว้ในข้อมูลอ้างอิงรหัสข้อผิดพลาด

ข้อผิดพลาดเกี่ยวกับรันไทม์

ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน

รหัสข้อผิดพลาด ข้อความ
ExecutionFailed เรียกใช้ regularExpressionProtection StepDefinition {0} ไม่สำเร็จ สาเหตุ: {1}
InstantiationFailed ไม่สามารถสร้างอินสแตนซ์ regularExpressionProtection StepDefinition {0}
NonMessageVariable ตัวแปร {0} ไม่แปลค่าเป็นข้อความ
SourceMessageNotAvailable ไม่มีข้อความ {0} สำหรับ regularExpressionProtection StepDefinition {1}
ThreatDetected ภัยคุกคามของนิพจน์ทั่วไปที่ตรวจพบใน {0}: นิพจน์ทั่วไป: {1} อินพุต: {2}
VariableResolutionFailed แก้ไขตัวแปร {0} ไม่สำเร็จ

ข้อผิดพลาดในการทำให้ใช้งานได้

รหัสข้อผิดพลาด ข้อความ แก้ไข
CannotBeConvertedToNodeset regularExpressionProtection {0}: ผลลัพธ์ของ xpath {1} แปลงเป็นชุดโหนดไม่ได้ บริบท {2}
DuplicatePrefix regularExpressionProtection {0}: คำนำหน้าซ้ำ {1}
EmptyJSONPathExpression regularExpressionProtection {0}: นิพจน์ JSONPath ว่างเปล่า
EmptyXPathExpression regularExpressionProtection {0}: นิพจน์ XPath ว่างเปล่า
InvalidRegularExpression regularExpressionProtection {0}: นิพจน์ทั่วไปไม่ถูกต้อง {1}, บริบท {2}
JSONPathCompilationFailed regularExpressionProtection {0}: คอมไพล์ jsonpath {1} ไม่สำเร็จ บริบท {2}
NONEmptyPrefixMappedToEmptyURI regularExpressionProtection {0}: คำนำหน้าที่ไม่ว่างเปล่า {1} แมปกับ URI ที่ว่างเปล่าไม่ได้
NoPatternsToEnforce regularExpressionProtection {0}: ไม่มีรูปแบบที่จะบังคับใช้ใน {1}
NothingToEnforce RegularExpressionProtection {0}: ต้องมี URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload อย่างน้อย 1 รายการ
XPathCompilationFailed regularExpressionProtection {0}: คอมไพล์ xpath ไม่สำเร็จ {1} บริบท {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 นโยบายการป้องกัน