นโยบาย RegularExpressionProtection

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

อะไร

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

วิดีโอ

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

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

ตัวอย่าง

GitHub

ตัวอย่างการป้องกันด้วยนิพจน์ทั่วไป ใน 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;

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

<RegularExpressionProtection> attributes

<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 ของนโยบายจะเป็น

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

องค์ประกอบ <Source>

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

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

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

<Source>response</Source>
ค่าเริ่มต้น: ไม่มี
การแสดงตน: ไม่บังคับ
ประเภท: สตริง

องค์ประกอบ <IgnoreUnresolvedVariables>

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

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

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

องค์ประกอบ <URIPath>

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

<URIPath>
  <Pattern>REGEX PATTERN</Pattern>
  <Pattern>REGEX PATTERN</Pattern>
</URIPath>
ค่าเริ่มต้น: ไม่มี
การแสดงตน: ไม่บังคับ
ประเภท: ไม่มี

องค์ประกอบ <QueryParam>

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

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

Attributes

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

องค์ประกอบ <Header>

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

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

Attributes

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

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

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

องค์ประกอบ <FormParam>

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

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

Attributes

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

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

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

องค์ประกอบ <Variable>

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

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

Attributes

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

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

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

องค์ประกอบ <XMLPayload>

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

องค์ประกอบ <XMLPayload>/<Namespaces>/<Namespace>

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

Attributes

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

ระบุคำนำหน้าเพื่อช่วยระบุเนมสเปซที่กำหนด

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

องค์ประกอบ <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>

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

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

ระบุประเภทข้อมูล
<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

องค์ประกอบ <XMLPayload>/<XPath>/<Pattern>

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

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

องค์ประกอบ <JSONPayload>

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

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

Attributes

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

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

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

องค์ประกอบ <JSONPayload>/<JSONPath>/<Expression>

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

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

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

กำหนดรูปแบบนิพจน์ทั่วไป หากนิพจน์ทั่วไปในองค์ประกอบ <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