Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến
Tài liệu về Apigee X. thông tin
Nội dung
Giảm thiểu rủi ro phát sinh từ các cuộc tấn công ở cấp độ nội dung bằng cách cho phép bạn chỉ định giới hạn cho nhiều Các cấu trúc JSON, chẳng hạn như mảng và chuỗi.
Video: Xem một video ngắn để tìm hiểu thêm về cách Chính sách JSONThreatProtection cho phép bạn bảo vệ API khỏi các cuộc tấn công ở cấp độ nội dung.
Video: Xem video ngắn này về nền tảng API trên nhiều đám mây của Apigee.
Tham chiếu phần tử
Tài liệu tham khảo phần tử mô tả các phần tử và thuộc tính của 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> thuộc tính
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
Bảng sau đây mô tả những thuộc tính chung cho tất cả phần tử mẹ của chính sách:
Thuộc tính | Mô tả | Mặc định | Sự hiện diện |
---|---|---|---|
name |
Tên nội bộ của chính sách. Giá trị của thuộc tính (Không bắt buộc) Bạn có thể dùng phần tử |
Không áp dụng | Bắt buộc |
continueOnError |
Đặt thành Đặt thành |
false | Không bắt buộc |
enabled |
Hãy đặt thành Đặt thành |
đúng | Không bắt buộc |
async |
Thuộc tính này không được dùng nữa. |
false | Không được dùng nữa |
<DisplayName> phần tử
Hãy sử dụng cùng với thuộc tính name
để gắn nhãn chính sách trong phần
trình chỉnh sửa proxy giao diện người dùng quản lý có tên ngôn ngữ tự nhiên khác.
<DisplayName>Policy Display Name</DisplayName>
Mặc định |
Không áp dụng Nếu bạn bỏ qua phần tử này, giá trị của thuộc tính |
---|---|
Sự hiện diện | Không bắt buộc |
Loại | Chuỗi |
<ArrayElementCount> phần tử
Chỉ định số lượng phần tử tối đa được phép trong một mảng.
<ArrayElementCount>20</ArrayElementCount>
Mặc định: | Nếu bạn không chỉ định phần tử này hoặc nếu bạn chỉ định một số nguyên âm, hệ thống không thực thi giới hạn. |
Sự hiện diện: | Không bắt buộc |
Loại: | Số nguyên |
<ContainerDepth> phần tử
Chỉ định chiều sâu tối đa của vùng chứa được phép, trong đó vùng chứa là các đối tượng hoặc mảng. Ví dụ: một mảng chứa một đối tượng có chứa một đối tượng sẽ dẫn đến việc ngăn chặn độ sâu 3.
<ContainerDepth>10</ContainerDepth>
Mặc định: | Nếu bạn không chỉ định phần tử này hoặc nếu bạn chỉ định một số nguyên âm, hệ thống không áp dụng bất kỳ giới hạn nào. |
Sự hiện diện: | Không bắt buộc |
Loại: | Số nguyên |
<ObjectEntryCount> phần tử
Chỉ định số lượng mục tối đa được phép trong một đối tượng.
<ObjectEntryCount>15</ObjectEntryCount>
Mặc định: | Nếu bạn không chỉ định phần tử này hoặc nếu bạn chỉ định một số nguyên âm, hệ thống không áp dụng bất kỳ giới hạn nào. |
Sự hiện diện: | Không bắt buộc |
Loại: | Số nguyên |
<ObjectEntryNameLength> phần tử
Chỉ định độ dài chuỗi tối đa được phép cho tên thuộc tính trong một đối tượng.
<ObjectEntryNameLength>50</ObjectEntryNameLength>
Mặc định: | Nếu bạn không chỉ định phần tử này hoặc nếu bạn chỉ định một số nguyên âm, hệ thống không thực thi giới hạn. |
Sự hiện diện: | Không bắt buộc |
Loại: | Số nguyên |
<Source> phần tử
Thông báo cần được sàng lọc để phát hiện các cuộc tấn công tải trọng JSON. Thường được đặt thành
request
, vì thông thường, bạn cần xác thực các yêu cầu gửi đến từ ứng dụng khách.
Khi bạn đặt thành message
, phần tử này sẽ tự động đánh giá thông báo yêu cầu
khi được đính kèm vào luồng yêu cầu và thông báo phản hồi khi được đính kèm vào phản hồi
luồng.
<Source>request</Source>
Mặc định: | request |
Sự hiện diện: | Không bắt buộc |
Loại: |
Chuỗi. Các giá trị hợp lệ: yêu cầu, phản hồi hoặc tin nhắn. |
<StringValueLength> phần tử
Chỉ định độ dài tối đa được phép cho một giá trị chuỗi.
<StringValueLength>500</StringValueLength>
Mặc định: | Nếu bạn không chỉ định phần tử này hoặc nếu bạn chỉ định một số nguyên âm, hệ thống không thực thi giới hạn. |
Sự hiện diện: | Không bắt buộc |
Loại: | Số nguyên |
Tham chiếu lỗi
Phần này mô tả các mã lỗi và thông báo lỗi được trả về cũng như các biến lỗi do Edge đặt khi chính sách này kích hoạt lỗi. Thông tin này rất quan trọng nếu bạn đang phát triển các quy tắc lỗi để xử lý lỗi. Để tìm hiểu thêm, hãy xem bài viết Những điều bạn cần biết về lỗi chính sách và Xử lý lỗi.
Lỗi thời gian chạy
Những lỗi này có thể xảy ra khi chính sách này thực thi.
Mã lỗi | Trạng thái HTTP | Nguyên nhân | Khắc phục |
---|---|---|---|
steps.jsonthreatprotection.ExecutionFailed |
500 | Chính sách JSONThreatProtection có thể gửi nhiều loại lỗi ExecutionFailed. Hầu hết các lỗi này đều xảy ra khi vượt quá một ngưỡng cụ thể đã đặt trong chính sách. Các bao gồm các loại lỗi sau: độ dài tên mục nhập đối tượng, số lượng mục nhập đối tượng, số lượng phần tử mảng, chiều sâu vùng chứa, độ dài giá trị chuỗi chuỗi. Lỗi này cũng xảy ra khi tải trọng chứa đối tượng JSON không hợp lệ. | build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
Lỗi này xảy ra nếu thông báo
biến được chỉ định trong phần tử <Source> là:
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
Lỗi này xảy ra nếu phần tử <Source> được đặt thành một biến
không thuộc loại
tin nhắn.
|
build |
Lỗi triển khai
Không có.
Biến lỗi
Các biến này được đặt khi chính sách này kích hoạt lỗi. Để biết thêm thông tin, hãy xem bài viết Những điều bạn cần biết về lỗi chính sách.
Biến | Trong đó | Ví dụ: |
---|---|---|
fault.name="fault_name" |
fault_name là tên của lỗi, như được liệt kê trong bảng Lỗi thời gian chạy ở trên. Tên lỗi là phần cuối cùng của mã lỗi. | fault.name Matches "SourceUnavailable" |
jsonattack.policy_name.failed |
policy_name là tên do người dùng chỉ định của chính sách gây ra lỗi. | jsonattack.JTP-SecureRequest.failed = true |
Ví dụ về phản hồi khi gặp lỗi
{ "fault": { "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Ví dụ về quy tắc lỗi
<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>
Giản đồ
Lưu ý về cách sử dụng
Giống như các dịch vụ dựa trên XML, những API hỗ trợ ký hiệu đối tượng JavaScript (JSON) dễ bị tấn công tấn công cấp nội dung. Các cuộc tấn công JSON đơn giản cố sử dụng các cấu trúc làm choáng ngợp trình phân tích cú pháp JSON để xảy ra sự cố một dịch vụ và tạo ra các cuộc tấn công từ chối dịch vụ ở cấp ứng dụng. Tất cả các chế độ cài đặt là không bắt buộc và nên được điều chỉnh để tối ưu hoá yêu cầu dịch vụ của bạn so với tiềm năng lỗ hổng bảo mật.