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

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

This section describes the error codes and messages returned and fault variables set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. If you want to capture an error and raise your own custom error, set the continueOnError="true" attribute on the policy root element. To learn more, see What you need to know about policy errors and Handling faults.

Errors returned from Edge policies follow a consistent format as described in the Error code reference.

Runtime errors

These errors can occur when the policy executes.

Error Code Message
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}

Deployment errors

Error Code Message Fix
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 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 table above. fault.name Matches "ThreatDetected"
regularexpressionprotection.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. regularexpressionprotection.Regular-Expressions-Protection-1.failed = true

สคีมา

หัวข้อที่เกี่ยวข้อง

ภัยคุกคามของ JSON นโยบายการป้องกัน

ภัยคุกคาม XML นโยบายการป้องกัน