คุณกำลังดูเอกสารประกอบของ 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 |
ตั้งค่าเป็น ตั้งค่าเป็น |
false | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
false | เลิกใช้ |
องค์ประกอบ <DisplayName>
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติที่แตกต่างออกไป
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มีข้อมูล หากคุณไม่ใส่องค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
Type | สตริง |
องค์ประกอบ <ArrayElementCount>
ระบุจำนวนองค์ประกอบสูงสุดที่อนุญาตในอาร์เรย์
<ArrayElementCount>20</ArrayElementCount>
ค่าเริ่มต้น: | หากไม่ระบุองค์ประกอบนี้หรือระบุจำนวนเต็มลบ ระบบจะไม่บังคับใช้ขีดจำกัด |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
องค์ประกอบ <ContainerDepth>
ระบุความลึกของการบรรจุสูงสุดที่อนุญาต ซึ่งคอนเทนเนอร์เป็นออบเจ็กต์หรืออาร์เรย์ เช่น อาร์เรย์ที่มีออบเจ็กต์ซึ่งมีออบเจ็กต์จะทำให้มีความลึกของการควบคุมเป็น 3
<ContainerDepth>10</ContainerDepth>
ค่าเริ่มต้น: | หากไม่ระบุองค์ประกอบนี้หรือระบุจำนวนเต็มลบ ระบบจะไม่บังคับใช้ขีดจำกัด |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
องค์ประกอบ <ObjectEntryCount>
ระบุจำนวนรายการสูงสุดที่อนุญาตในออบเจ็กต์
<ObjectEntryCount>15</ObjectEntryCount>
ค่าเริ่มต้น: | หากไม่ระบุองค์ประกอบนี้หรือระบุจำนวนเต็มลบ ระบบจะไม่บังคับใช้ขีดจำกัด |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
องค์ประกอบ <ObjectEntryNameLength>
ระบุความยาวสตริงสูงสุดที่อนุญาตสำหรับชื่อพร็อพเพอร์ตี้ภายในออบเจ็กต์
<ObjectEntryNameLength>50</ObjectEntryNameLength>
ค่าเริ่มต้น: | หากไม่ระบุองค์ประกอบนี้หรือระบุจำนวนเต็มลบ ระบบจะไม่บังคับใช้ขีดจำกัด |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
องค์ประกอบ <Source>
ข้อความที่ต้องคัดกรองการโจมตีด้วยเพย์โหลด JSON โดยโดยทั่วไปจะตั้งค่าเป็น request
เนื่องจากคุณจะต้องตรวจสอบคำขอขาเข้าจากแอปไคลเอ็นต์
เมื่อตั้งค่าเป็น message
องค์ประกอบนี้จะประเมินข้อความคำขอโดยอัตโนมัติเมื่อแนบกับโฟลว์คำขอและข้อความตอบกลับเมื่อแนบไปกับขั้นตอนการตอบกลับ
<Source>request</Source>
ค่าเริ่มต้น: | ส่งคำขอ |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: |
สตริง ค่าที่ใช้ได้ ได้แก่ คำขอ การตอบกลับ หรือข้อความ |
องค์ประกอบ <StringValueLength>
ระบุความยาวสูงสุดที่อนุญาตให้ใช้สำหรับค่าสตริง
<StringValueLength>500</StringValueLength>
ค่าเริ่มต้น: | หากไม่ระบุองค์ประกอบนี้หรือระบุจำนวนเต็มลบ ระบบจะไม่บังคับใช้ขีดจำกัด |
สถานที่ตั้ง: | ไม่บังคับ |
ประเภท: | จำนวนเต็ม |
การอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายโค้ดข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่แสดงผลและตัวแปรข้อผิดพลาดที่ Edge กําหนดเมื่อนโยบายนี้ทําให้เกิดข้อผิดพลาด ข้อมูลนี้เป็นสิ่งสำคัญที่ต้องทราบหากคุณกำลังกำหนดกฎข้อผิดพลาดเพื่อจัดการกับข้อผิดพลาด ดูข้อมูลเพิ่มเติมได้ที่สิ่งที่คุณต้องทราบเกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
---|---|---|---|
steps.jsonthreatprotection.ExecutionFailed |
500 | นโยบาย JSONThreatProtection อาจทำให้เกิดข้อผิดพลาด ExecutionFailed หลายประเภท ข้อผิดพลาดเหล่านี้ส่วนใหญ่จะเกิดขึ้นเมื่อเกินเกณฑ์ที่ตั้งไว้ในนโยบาย ประเภทข้อผิดพลาดเหล่านี้ ได้แก่ ความยาวของชื่อออบเจ็กต์ จำนวนรายการออบเจ็กต์ จำนวนองค์ประกอบอาร์เรย์ ความลึกของคอนเทนเนอร์ ความยาวของค่าสตริง ข้อผิดพลาดนี้ยังเกิดขึ้นเมื่อเพย์โหลดมีออบเจ็กต์ JSON ที่ไม่ถูกต้อง | build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
ข้อผิดพลาดนี้เกิดขึ้นหากตัวแปร message ที่ระบุในองค์ประกอบ <Source> มีลักษณะดังนี้
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
ข้อผิดพลาดนี้เกิดขึ้นหากมีการตั้งค่าองค์ประกอบ <Source> เป็นตัวแปรที่ไม่ใช่ประเภท ข้อความ
|
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>
สคีมา
หมายเหตุการใช้งาน
API ที่รองรับรูปแบบออบเจ็กต์ (JSON) ของ JavaScript มีความเสี่ยงต่อการโจมตีระดับเนื้อหา เช่นเดียวกับบริการแบบ XML การโจมตี JSON แบบง่ายพยายามใช้โครงสร้างที่ทำงานกับโปรแกรมแยกวิเคราะห์ JSON มากเกินไปเพื่อสร้างข้อขัดข้องให้กับบริการและก่อให้เกิดการโจมตีแบบปฏิเสธการให้บริการระดับแอปพลิเคชัน การตั้งค่าทั้งหมดเป็นแบบไม่บังคับ และควรปรับแต่งเพื่อเพิ่มประสิทธิภาพข้อกําหนดในการให้บริการของคุณจากช่องโหว่ที่อาจเกิดขึ้น