คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
อะไร
ดึงข้อมูลจากข้อความ (เช่น เส้นทาง URI, พารามิเตอร์การค้นหา, ส่วนหัว, พารามิเตอร์แบบฟอร์ม, ตัวแปร, เพย์โหลด XML หรือเพย์โหลด JSON) และประเมินเนื้อหานั้นเทียบกับนิพจน์ทั่วไปที่กำหนดไว้ล่วงหน้า หากนิพจน์ทั่วไปที่ระบุมีค่าเป็นจริง ข้อความนั้นถือเป็นภัยคุกคามและจะถูกปฏิเสธ
วิดีโอ
ดูวิดีโอต่อไปนี้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับนโยบายการป้องกันนิพจน์ทั่วไป
วิดีโอ | คำอธิบาย |
---|---|
การป้องกันการโจมตีด้วยการแทรก SQL (Edge ใหม่) | ป้องกันการโจมตีด้วยการแทรก SQL โดยใช้นโยบายการป้องกันนิพจน์ทั่วไปใน UI ของประสบการณ์ Edge ใหม่ |
การป้องกันการโจมตีด้วยการแทรก SQL (คลาสสิก 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><\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*> </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 เป็น <\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*>
นอกจากนี้ หากนิพจน์ทั่วไปมีเครื่องหมายทับ (/) คุณต้องกำหนดเป็นอักขระหลีกโดยตั้งค่าแอตทริบิวต์ <JSONPayload>
escapeSlashCharacter
เป็น true
การจับคู่ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
เป็นกรณีการใช้งานทั่วไปในการจับคู่ที่ไม่คำนึงถึงตัวพิมพ์เล็กหรือใหญ่ นี่คือตัวอย่างของวิธีที่คุณสามารถทำได้ในนิพจน์ทั่วไปโดยใช้โครงสร้าง (?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 ที่เข้ารหัส: <!--#(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 ที่เข้ารหัส: <\s*script\b[^>]*>[^<]+<\s*/\s*script\s*> |
การแทรกข้อยกเว้นของ 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>
แอตทริบิวต์ <regularExpressionProtection>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
ตารางต่อไปนี้อธิบายแอตทริบิวต์ที่ใช้ร่วมกันในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มีข้อมูล | จำเป็น |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
false | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
false | เลิกใช้ |
องค์ประกอบ <DisplayName>
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติที่แตกต่างออกไป
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มีข้อมูล หากคุณไม่ใส่องค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
Type | สตริง |
องค์ประกอบ <Source>
ระบุข้อความที่ต้องการดึงข้อมูล
หากละเว้นองค์ประกอบ <Source>
ค่าเริ่มต้นจะเป็น message
เช่น <Source>message</Source>
เมื่อตั้งค่าเป็น message
นโยบายจะใช้ข้อความคำขอเป็นแหล่งที่มาเมื่อแนบไปกับโฟลว์คำขอ ในทำนองเดียวกัน นโยบายจะใช้ข้อความตอบกลับเมื่อแนบไปกับขั้นตอนการตอบกลับด้วย
หากข้อความต้นฉบับแก้ไขไม่ได้ หรือแก้ไขเป็นประเภทที่ไม่ใช่ข้อความ นโยบายจะแสดงข้อผิดพลาด
<Source>response</Source>
ค่าเริ่มต้น: | ไม่มีข้อมูล |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | สตริง |
องค์ประกอบ < ignoreUnresolvedVariable>
กำหนดว่านโยบายจะแสดงผลข้อผิดพลาดหรือไม่เมื่อตรวจพบตัวแปรที่แก้ไขไม่ได้
หากตั้งค่าเป็น false
(ค่าเริ่มต้น) นโยบายจะแสดงผลข้อผิดพลาดเมื่อพบตัวแปรที่แก้ไขไม่ได้ หากตั้งค่าเป็น true
ระบบจะถือว่าตัวแปรที่ยังไม่ได้แก้ไขเป็นสตริงว่างเปล่า (Null)
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
ค่าเริ่มต้น: | false |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | บูลีน |
อีลิเมนต์ <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
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ชื่อ | ชื่อของพารามิเตอร์การค้นหาคำขอซึ่งต้องแยกข้อมูลออกมาเพื่อการประเมินกับนิพจน์ทั่วไปที่ระบุ | ไม่มีข้อมูล | จำเป็น |
องค์ประกอบ <Header>
ระบุว่าต้องดึงข้อมูลจากส่วนหัวของคำขอและคำตอบและประเมินเทียบกับนิพจน์ทั่วไปที่ระบุ คุณต้องระบุองค์ประกอบ <Pattern>
อย่างน้อย 1 รายการที่ระบุรูปแบบนิพจน์ทั่วไปให้ตรงกัน
<Header name="a-header"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Header>
ค่าเริ่มต้น: | ไม่มีข้อมูล |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | ไม่มีข้อมูล |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ชื่อ |
ชื่อของส่วนหัวคำขอและการตอบกลับที่ต้องดึงข้อมูลมาประเมินกับนิพจน์ทั่วไปที่ระบุ |
ไม่มีข้อมูล | จำเป็น |
องค์ประกอบ <FormParam>
ระบุว่าต้องดึงข้อมูลจากพารามิเตอร์ของแบบฟอร์มคําขอและประเมินเทียบกับนิพจน์ทั่วไปที่ระบุ คุณต้องระบุองค์ประกอบ <Pattern>
อย่างน้อย 1 รายการที่ระบุรูปแบบนิพจน์ทั่วไปให้ตรงกัน
<FormParam name="a-form-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </FormParam>
ค่าเริ่มต้น: | ไม่มีข้อมูล |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | ไม่มีข้อมูล |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ชื่อ |
ชื่อของพารามิเตอร์แบบฟอร์มคำขอที่ต้องดึงข้อมูลสำหรับการประเมินกับนิพจน์ทั่วไปที่ระบุ |
ไม่มีข้อมูล | จำเป็น |
องค์ประกอบ <Variable>
ระบุว่าต้องดึงข้อมูลจากตัวแปรที่ระบุและประเมินเทียบกับนิพจน์ทั่วไปที่ให้ไว้
<Variable name="request.content"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Variable>
ค่าเริ่มต้น: | ไม่มีข้อมูล |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | ไม่มีข้อมูล |
Attributes
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
ชื่อ |
ชื่อของตัวแปรที่ต้องดึงข้อมูลสำหรับประเมินกับนิพจน์ทั่วไปที่ระบุ |
ไม่มีข้อมูล | จำเป็น |
องค์ประกอบ <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>
ระบุประเภทข้อมูล<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
ค่าเริ่มต้น: | สตริง |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | สตริง |
ค่าที่ถูกต้องมีดังนี้ |
สตริง ค่าที่ถูกต้อง ได้แก่ |
องค์ประกอบ <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 |
ตั้งค่าเป็น |
จริง | ไม่บังคับ |
องค์ประกอบ <JSONPayload>/<JSONPath>/<Expression>
ระบุนิพจน์ JSONPath ที่กําหนดไว้สําหรับตัวแปร
<JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath>
ค่าเริ่มต้น: | ไม่มีข้อมูล |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | สตริง |
องค์ประกอบ <JSONPayload>/<JSONPath>/<Pattern>
กำหนดรูปแบบนิพจน์ทั่วไป หากนิพจน์ทั่วไปในองค์ประกอบ <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} | build |
DuplicatePrefix | regularExpressionProtection {0}: คำนำหน้าซ้ำ {1} | build |
EmptyJSONPathExpression | regularExpressionProtection {0}: นิพจน์ JSONPath ว่างเปล่า | build |
EmptyXPathExpression | regularExpressionProtection {0}: นิพจน์ XPath ว่างเปล่า | build |
InvalidRegularExpression | regularExpressionProtection {0}: นิพจน์ทั่วไปไม่ถูกต้อง {1}, บริบท {2} | build |
JSONPathCompilationFailed | regularExpressionProtection {0}: คอมไพล์ jsonpath {1} ไม่สำเร็จ บริบท {2} | build |
NONEmptyPrefixMappedToEmptyURI | regularExpressionProtection {0}: คำนำหน้าที่ไม่ว่างเปล่า {1} แมปกับ URI ที่ว่างเปล่าไม่ได้ | build |
NoPatternsToEnforce | regularExpressionProtection {0}: ไม่มีรูปแบบที่จะบังคับใช้ใน {1} | build |
NothingToEnforce | RegularExpressionProtection {0}: ต้องมี URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload อย่างน้อย 1 รายการ | build |
XPathCompilationFailed | regularExpressionProtection {0}: คอมไพล์ xpath ไม่สำเร็จ {1} บริบท {2} | build |
ตัวแปรของข้อผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบาย
ตัวแปร | สถานที่ | ตัวอย่าง |
---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของความผิดพลาดตามที่ระบุไว้ในตารางด้านบน | fault.name Matches "ThreatDetected" |
regularexpressionprotection.policy_name.failed |
policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นข้อผิดพลาด | regularexpressionprotection.Regular-Expressions-Protection-1.failed = true |