คุณกำลังดูเอกสารประกอบของ 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><\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
การจับคู่ที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
การจับคู่แบบไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่เป็น 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: <!--#(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ของคำขอต้องเป็น 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 |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
| ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
|---|---|
| การมีบุคคลอยู่ | ไม่บังคับ |
| ประเภท | สตริง |
องค์ประกอบ <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>
| ค่าเริ่มต้น: | สตริง |
| การแสดงตน: | ไม่บังคับ |
| ประเภท: | สตริง |
| ค่าที่ใช้ได้ |
สตริง ค่าที่ถูกต้อง ได้แก่ |
องค์ประกอบ <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> 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} | 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 |