คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
อะไร
ลดความเสี่ยงที่เกิดจากการโจมตีระดับเนื้อหา โดยให้คุณระบุขีดจำกัดสำหรับ โครงสร้าง JSON เช่น อาร์เรย์และสตริง
วิดีโอ: ดูวิดีโอสั้นๆ เพื่อเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการทำงานของ นโยบาย JSONThreatProtection ช่วยให้คุณรักษาความปลอดภัยของ API จากการโจมตีระดับเนื้อหา
วิดีโอ: ลองดูวิดีโอสั้นนี้เกี่ยวกับแพลตฟอร์ม API แบบข้ามระบบคลาวด์ของ Apigee
การอ้างอิงองค์ประกอบ
การอ้างอิงองค์ประกอบอธิบายองค์ประกอบและแอตทริบิวต์ของ JSONThreatProtection
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSONThreatProtection 1</DisplayName> <ArrayElementCount>20</ArrayElementCount> <ContainerDepth>10</ContainerDepth> <ObjectEntryCount>15</ObjectEntryCount> <ObjectEntryNameLength>50</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>500</StringValueLength> </JSONThreatProtection>
<JSONThreatProtection> แอตทริบิวต์
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
ประเภท | สตริง |
<ArrayElementCount> องค์ประกอบ
ระบุจำนวนองค์ประกอบสูงสุดที่อนุญาตในอาร์เรย์
<ArrayElementCount>20</ArrayElementCount>
ค่าเริ่มต้น: | หากคุณไม่ระบุองค์ประกอบนี้ หรือถ้าคุณระบุจำนวนเต็มลบ ระบบจะ ไม่บังคับใช้ขีดจำกัด |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
<ContainerDepth> องค์ประกอบ
ระบุความลึกสูงสุดของการกักเก็บที่อนุญาต โดยที่คอนเทนเนอร์เป็นออบเจ็กต์หรืออาร์เรย์ เช่น อาร์เรย์ที่มีออบเจ็กต์หนึ่งซึ่งมีออบเจ็กต์อยู่จะทำให้เกิดการควบคุม ความลึก 3
<ContainerDepth>10</ContainerDepth>
ค่าเริ่มต้น: | หากคุณไม่ระบุองค์ประกอบนี้ หรือถ้าคุณระบุจำนวนเต็มลบ ระบบจะ ไม่บังคับใช้ขีดจำกัดใดๆ |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
<ObjectEntryCount> องค์ประกอบ
ระบุจำนวนรายการสูงสุดที่อนุญาตในออบเจ็กต์
<ObjectEntryCount>15</ObjectEntryCount>
ค่าเริ่มต้น: | หากคุณไม่ระบุองค์ประกอบนี้ หรือถ้าคุณระบุจำนวนเต็มลบ ระบบจะ ไม่บังคับใช้ขีดจำกัดใดๆ |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
<ObjectEntryNameLength> องค์ประกอบ
ระบุความยาวสตริงสูงสุดที่อนุญาตสำหรับชื่อพร็อพเพอร์ตี้ภายในออบเจ็กต์
<ObjectEntryNameLength>50</ObjectEntryNameLength>
ค่าเริ่มต้น: | หากคุณไม่ระบุองค์ประกอบนี้ หรือถ้าคุณระบุจำนวนเต็มลบ ระบบจะ ไม่บังคับใช้ขีดจำกัด |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
<Source> องค์ประกอบ
ข้อความที่จะคัดกรองการโจมตีเพย์โหลด JSON โดยทั่วไปจะตั้งค่าเป็น
request
เนื่องจากโดยปกติแล้วคุณจะต้องตรวจสอบคำขอขาเข้าจากแอปไคลเอ็นต์
เมื่อตั้งค่าเป็น message
องค์ประกอบนี้จะประเมินข้อความคำขอโดยอัตโนมัติ
เมื่อแนบไปกับขั้นตอนคำขอและข้อความตอบกลับเมื่อแนบมากับการตอบกลับ
<Source>request</Source>
ค่าเริ่มต้น: | ส่งคำขอ |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: |
สตริง ค่าที่ใช้ได้ ได้แก่ request,response หรือข้อความ |
<StringValueLength> องค์ประกอบ
ระบุความยาวสูงสุดที่อนุญาตสำหรับค่าสตริง
<StringValueLength>500</StringValueLength>
ค่าเริ่มต้น: | หากคุณไม่ระบุองค์ประกอบนี้ หรือถ้าคุณระบุจำนวนเต็มลบ ระบบจะ ไม่บังคับใช้ขีดจำกัด |
การตรวจหาบุคคล: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงกลับมา และตัวแปรข้อผิดพลาดที่ Edge ตั้งค่าไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้มีความสำคัญต่อการทราบว่าคุณจะสร้างกฎความผิดพลาดเพื่อ จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
steps.jsonthreatprotection.ExecutionFailed |
500 | นโยบาย JSONThreatProtection สามารถแสดงข้อผิดพลาด ExecutionFailed หลายประเภท ข้อผิดพลาดเหล่านี้ส่วนใหญ่เกิดขึ้นเมื่อเกินเกณฑ์ที่กำหนดไว้ในนโยบาย เหล่านี้ ประเภทของข้อผิดพลาดมีดังนี้ ความยาวของชื่อรายการออบเจ็กต์ จำนวนรายการออบเจ็กต์ จำนวนองค์ประกอบของอาร์เรย์ ความลึกของคอนเทนเนอร์ ความยาวของค่าสตริงสตริง ข้อผิดพลาดนี้ยังเกิดขึ้นเมื่อเพย์โหลดมีออบเจ็กต์ JSON ที่ไม่ถูกต้อง | build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
ข้อผิดพลาดนี้จะเกิดขึ้นหากข้อความ
ตัวแปรที่ระบุในองค์ประกอบ <Source> มีดังนี้
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <Source> ได้รับการตั้งค่าเป็นตัวแปรที่
ไม่ใช่ประเภท
message
|
build |
ข้อผิดพลาดในการทำให้ใช้งานได้
ไม่มี
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทำให้เกิดข้อผิดพลาด โปรดดูข้อมูลเพิ่มเติมที่หัวข้อสิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบาย
ตัวแปร | สถานที่ | ตัวอย่าง |
---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด | fault.name Matches "SourceUnavailable" |
jsonattack.policy_name.failed |
policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นสาเหตุของข้อผิดพลาด | jsonattack.JTP-SecureRequest.failed = true |
ตัวอย่างการตอบสนองข้อผิดพลาด
{ "fault": { "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
ตัวอย่างกฎข้อผิดพลาด
<FaultRule name="JSONThreatProtection Policy Faults">
<Step>
<Name>AM-CustomErrorResponse</Name>
<Condition>(fault.name Matches "ExecutionFailed") </Condition>
</Step>
<Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>
สคีมา
หมายเหตุการใช้งาน
เช่นเดียวกับบริการที่ใช้ XML API ที่รองรับสัญลักษณ์ออบเจ็กต์ของ JavaScript (JSON) จะมีช่องโหว่ที่ รวมถึงการโจมตีระดับเนื้อหา การโจมตี JSON แบบง่ายจะพยายามใช้โครงสร้างที่ทำให้โปรแกรมแยกวิเคราะห์ JSON ทำงานหนักเกินไป ที่จะทำให้บริการขัดข้องและก่อให้เกิดการโจมตีแบบปฏิเสธการให้บริการในระดับแอปพลิเคชัน การตั้งค่าทั้งหมด เป็นตัวเลือกและควรปรับให้เหมาะสมเพื่อเพิ่มประสิทธิภาพข้อกำหนดของบริการตาม ช่องโหว่