Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về
Apigee X. thông tin
ExecutionFailed
Mã lỗi
steps.jsonthreatprotection.ExecutionFailed
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: error_description at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Các loại lỗi và nguyên nhân có thể xảy ra
Chính sách JSONBảo vệ quy trình bảo vệ có thể gửi nhiều loại lỗi ExecutionFailed. Bảng dưới đây liệt kê các loại lỗi khác nhau và nguyên nhân có thể xảy ra của các lỗi đó:
Loại lỗi | Nguyên nhân |
Vượt quá độ dài tên mục nhập | Đã vượt quá độ dài chuỗi tối đa cho phép trong tên mục nhập của đối tượng. |
Vượt quá số mục nhập đối tượng | Đã vượt quá số mục nhập tối đa được phép trong một đối tượng. |
Vượt quá số lượng phần tử mảng | Đã vượt quá số phần tử tối đa được cho phép trong một mảng. |
Vượt quá độ sâu vùng chứa | Đã vượt quá độ sâu lồng nhau tối đa cho phép. |
Vượt quá độ dài giá trị chuỗi | Đã vượt quá độ dài tối đa cho phép đối với giá trị chuỗi. |
Đối tượng JSON không hợp lệ | Tải trọng JSON mà bạn nhập là không hợp lệ. |
Đã vượt quá độ dài tên mục nhập đối tượng
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry name length at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Nội dung phản hồi mẫu cho Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded object entry name length at line 2",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source>
chỉ định chứa đối tượng JSON có tên thuộc tính vượt quá độ dài tối đa đã chỉ định trong phần tử <ObjectEntryNameLength>
.
Ví dụ: nếu phần tử <ObjectEntryNameLength>
được chỉ định là 5 trong chính sách, nhưng phần tải thông báo đầu vào có thuộc tính JSON có tên vượt quá 5 ký tự, thì lỗi này sẽ xảy ra.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên của chính sách JSON AeProtection và số dòng nơi có tên mục nhập dài. Ví dụ: trong thông báo lỗi sau đây, tên chính sách JSON AeProtection là
JSON-Threat-Protection-1
và số dòng trong tải trọng là 2.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Kiểm tra chính sách mà bạn đã xác định ở Bước 1 và lưu ý giá trị được chỉ định trong phần tử
<ObjectEntryNameLength>
.Ví dụ: trong chính sách JSON Hãy đe doạ bảo vệ sau đây,
<ObjectEntryNameLength>
được đặt thành5
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>12</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>5</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Kiểm tra số dòng cụ thể (được xác định trong Bước 1) của tải trọng đầu vào và kiểm tra xem độ dài của tên đối tượng có lớn hơn giá trị được chỉ định trong phần tử
<ObjectEntryNameLength>
(xác định trong Bước 2) hay không. Nếu độ dài của tên đối tượng vượt quá con số đó thì đó là nguyên nhân gây ra lỗi.Dưới đây là ví dụ về tải trọng đầu vào:
{ "number" : 500, "string" : "text" }
Tải trọng JSON hiển thị ở trên có thuộc tính tên là
number
ở dòng 2, có 6 ký tự (độ dài tên là 6). Vì độ dài của tên đối tượng lớn hơn 5 (giá trị được chỉ định cho phần tử<ObjectEntryNameLength>
), nên bạn sẽ gặp lỗi sau:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name length at line 2
Độ phân giải
Nếu mục đích của chính sách JSON AeeProtection là bảo vệ các gói dữ liệu có tên mục nhập đối tượng vượt quá giá trị đã xác định, thì sẽ có thông báo lỗi xuất hiện. Trong trường hợp này, bạn không cần làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng có thể chỉ định tên mục nhập đối tượng dài hơn trong tải trọng mà không gây ra bất kỳ hậu quả nào, hãy sửa đổi <ObjectEntryNameLength>
thành một giá trị phù hợp dựa trên yêu cầu của bạn.
Ví dụ: nếu bạn cho rằng mình có thể cho phép tên đối tượng có độ dài tối đa là 10 ký tự, hãy sửa đổi chính sách JSONBảo vệ mối nguy như sau:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>12</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>10</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Đã vượt quá số lượng mục nhập đối tượng
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded object entry count at line line_num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Nội dung phản hồi mẫu cho Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded object entry count at line 7",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source>
chỉ định chứa đối tượng JSON chứa nhiều mục nhập (thuộc tính) hơn giá trị được chỉ định trong phần tử <ObjectEntryCount>
của chính sách.
Ví dụ: nếu phần tử <ObjectEntryCount>
là 5, nhưng tải trọng JSON đầu vào có nhiều hơn 5 mục nhập, thì lỗi này sẽ được gửi ra.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên của chính sách JSON AeProtection và số dòng nơi vượt quá số mục nhập. Ví dụ: trong thông báo lỗi sau đây, tên chính sách là
JSON-Threat-Protection-1
và số dòng trong tải trọng là7
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Ghi lại giá trị được chỉ định trong phần tử
<ObjectEntryCount>
của chính sách (xác định ở Bước 1).Trong ví dụ sau đây về chính sách,
<ObjectEntryCount>
được đặt thành5
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>12</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>6</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Kiểm tra số dòng cụ thể (được xác định trong Bước 1) của tải trọng đầu vào và kiểm tra xem số lượng thực thể trong tải trọng có lớn hơn giá trị được chỉ định cho phần tử
<ObjectEntryCount>
hay không (đã xác định trong Bước 2). Nếu số lượng đối tượng vượt quá số mục nhập đối tượng, thì đó là nguyên nhân gây ra lỗi.Dưới đây là ví dụ về tải trọng đầu vào:
{ "name" : "John", "id" : 234687, "age" : 31, "city" : "New York", "country" : "USA", "company" : "Google" }
Trong tải trọng JSON hiển thị ở trên, mục nhập thứ 6 xuất hiện ở dòng #7 (công ty). Vì số lượng mục nhập đối tượng trong tải trọng JSON đầu vào lớn hơn 5 (giá trị được chỉ định cho phần tử
<ObjectEntryCount>
), nên bạn sẽ gặp lỗi sau:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at line 7
Độ phân giải
Nếu chính sách JSONBảo vệ khỏi các mối đe doạ nhằm bảo vệ các tải trọng có số lượng mục nhập đối tượng vượt quá một ngưỡng cụ thể, thì hệ thống sẽ hiển thị thông báo lỗi. Trong trường hợp này, bạn không cần phải làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng có thể đưa thêm nhiều mục nhập đối tượng vào tải trọng mà không gây ra hậu quả nào, hãy sửa đổi <ObjectEntryCount>
thành một giá trị phù hợp dựa trên yêu cầu của bạn.
Ví dụ: Nếu bạn cho rằng mình có thể cho phép tối đa 10 mục nhập đối tượng, hãy sửa đổi chính sách JSON Kiểu Mối nguy hiểm như sau:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>12</ContainerDepth>
<ObjectEntryCount>10</ObjectEntryCount>
<ObjectEntryNameLength>6</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Đã vượt quá số lượng phần tử mảng
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded array element count at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Nội dung phản hồi mẫu cho Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded array element count at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source>
chỉ định chứa một mảng JSON có số lượng phần tử nhiều hơn số lượng được chỉ định trong phần tử <ArrayElementCount>
của chính sách.
Ví dụ: nếu phần tử <ArrayElementCount>
được chỉ định là 3
, nhưng tải trọng đầu vào có một mảng JSON có nhiều hơn 3 phần tử, thì lỗi này sẽ được gửi ra.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên chính sách và số dòng có vượt quá độ dài mảng. Ví dụ: trong thông báo lỗi sau đây, tên chính sách là
JSON-Threat-Protection-1
và số dòng trong tải trọng là3
:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Ghi lại giá trị được chỉ định cho phần tử
<ArrayElementCount>
của chính sách (xác định trong Bước 1).Trong ví dụ sau đây về chính sách JSON HayProtection,
<ArrayElementCount>
được đặt thành3
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>12</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>6</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Kiểm tra số dòng cụ thể (được xác định trong Bước 1) của tải trọng đầu vào và kiểm tra xem mảng được chỉ định ở đó có số lượng lớn hơn số được chỉ định trong phần tử
<ArrayElementCount>
hay không (đã xác định trong Bước 2). Nếu số lượng phần tử mảng vượt quá số lượng, thì đó là nguyên nhân gây ra lỗi.Dưới đây là ví dụ về tải trọng đầu vào:
{ "name":"Ford", "models":[ "Mustang", "Endeavour", "Fiesta", "EcoSport", "Focus" ] }
Tải trọng JSON hiển thị ở trên có 5 phần tử trong mảng có tên là
models
ở dòng 3. Vì số lượng phần tử mảng lớn hơn 3 (giá trị được chỉ định cho phần tử<ArrayElementCount>
), nên bạn sẽ gặp lỗi sau:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
Độ phân giải
Nếu chính sách JSONBảo vệ khỏi các biện pháp bảo vệ chống lại các tải trọng dữ liệu có ngưỡng số lượng mảng cụ thể, thì hệ thống sẽ hiển thị thông báo lỗi. Trong trường hợp này, bạn không cần làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng có thể cho phép số lượng phần tử cao hơn trong một mảng, hãy sửa đổi <ArrayElementCount>
thành một giá trị phù hợp dựa trên yêu cầu của bạn.
Ví dụ: Nếu bạn cho rằng mình có thể cho phép tối đa 5 phần tử mảng, hãy sửa đổi chính sách như sau:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>5</ArrayElementCount>
<ContainerDepth>12</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>6</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Đã vượt quá chiều sâu vùng chứa
Nội dung phản hồi lỗi
Lưu lượng truy cập trong thời gian chạy trả về mã phản hồi 500 với lỗi sau:
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded container depth at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Nội dung phản hồi mẫu cho Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded container depth at line 5",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source>
chỉ định chứa đối tượng JSON chứa các phần tử JSON có độ sâu vùng chứa vượt quá độ sâu vùng chứa tối đa đã chỉ định trong phần tử <ContainerDepth>
của chính sách. Chiều sâu vùng chứa là độ sâu lồng nhau tối đa được phép đối với các phần tử JSON. Ví dụ: một mảng có chứa đối tượng chứa một đối tượng sẽ dẫn đến độ sâu vùng chứa là 3.
Ví dụ: nếu phần tử <ContainerDepth>
là 3
, nhưng tải trọng đầu vào có độ sâu vùng chứa vượt quá giới hạn này, thì lỗi này sẽ xảy ra.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên của chính sách JSONBảo vệ sự an toàn và số dòng nơi vượt quá độ sâu vùng chứa. Ví dụ: trong thông báo lỗi sau đây, tên chính sách là
JSON-Threat-Protection-1
và số dòng trong tải trọng là5
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Ghi lại giá trị được chỉ định cho phần tử
<ContainerDepth>
(xác định trong Bước 1).Trong ví dụ sau đây về chính sách JSON HayProtection,
<ContainerDepth>
được đặt thành5
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Kiểm tra số dòng cụ thể (được xác định trong Bước 1) của tải trọng đầu vào và kiểm tra xem chiều sâu vùng chứa trong tải trọng có cao hơn giá trị được chỉ định trong phần tử
<ContainerDepth>
(đã xác định trong Bước 2) hay không. Nếu chiều sâu vùng chứa vượt quá số lượng, thì đó là nguyên nhân gây ra lỗi.Dưới đây là ví dụ về tải trọng đầu vào:
{ "ContainerDepth2":[ { "ContainerDepth4":[ { "ContainerDepth6":[ "1", "2" ] } ] } ] }
Tải trọng JSON hiển thị ở trên có chiều sâu vùng chứa là 6 ở dòng 5. Vì chiều sâu lớn hơn 5, nên giá trị được chỉ định cho phần tử
<ContainerDepth>
của chính sách JSON Hãy đe doạ, bạn sẽ gặp lỗi sau:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at line 5
Độ phân giải
Nếu bạn muốn thiết lập chính sách JSON An toàn bảo vệ khỏi các tải trọng có độ sâu vùng chứa vượt quá giá trị đã chỉ định, thì bạn sẽ thấy thông báo lỗi xuất hiện. Trong trường hợp này, bạn không cần làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng độ sâu vùng chứa cao hơn có thể chấp nhận được, hãy sửa đổi <ContainerDepth>
thành giá trị phù hợp dựa trên yêu cầu của bạn.
Ví dụ: Nếu bạn cho rằng mình có thể cho phép độ sâu của vùng chứa tối đa là 10, hãy sửa đổi chính sách như sau:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>10</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
Đã vượt quá độ dài giá trị chuỗi
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: JSONThreatProtection[policy_name]: Exceeded string value length at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Nội dung phản hồi mẫu cho Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]:
Exceeded string value length at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source>
chỉ định chứa các phần tử JSON có giá trị nhiều ký tự hơn mức mà phần tử <StringValueLength>
cho phép.
Ví dụ: nếu phần tử <StringValueLength>
được đặt thành 50
trong chính sách, nhưng tải trọng đầu vào có một hoặc nhiều phần tử có giá trị chứa hơn 50 ký tự, thì lỗi này sẽ được gửi ra.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên chính sách và số dòng có vượt quá độ dài chuỗi. Trong ví dụ sau đây, tên chính sách là
JSON-Threat-Protection-1 and
dòng trong tải trọng3
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Ghi lại giá trị được chỉ định cho phần tử
<StringValueLength>
trong (đã xác định ở Bước 1).Trong ví dụ sau đây về chính sách JSON HayProtection,
<StringValueLength>
được đặt thành50
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>request</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Kiểm tra số dòng cụ thể (được xác định trong Bước 1) của tải trọng đầu vào và kiểm tra xem độ dài của giá trị có lớn hơn số ký tự được chỉ định cho phần tử
<StringValueLength>
hay không (đã xác định trong Bước 2). Nếu độ dài của giá trị vượt quá giới hạn, thì đó là nguyên nhân gây ra lỗi.Dưới đây là ví dụ về tải trọng đầu vào:
{ "Country": "New Zealand", "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu" }
Tải trọng JSON hiển thị ở trên có đối tượng tên là
Place Name
có giá trịTaumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu
có 85 ký tự ở dòng 3. Vì độ dài của giá trị lớn hơn 50 nên giá trị được chỉ định trong phần tử<StringValueLength>
, bạn sẽ gặp lỗi sau:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
Độ phân giải
Nếu mục đích của chính sách JSON AeeProtection là bảo vệ các gói dữ liệu có giá trị vượt quá một độ dài chuỗi cụ thể, thì bạn sẽ thấy thông báo lỗi xuất hiện. Trong trường hợp này, bạn không cần làm gì thêm.
Tuy nhiên, nếu bạn xác định rằng có thể chỉ định độ dài giá trị dài hơn trong tải trọng, hãy sửa đổi <StringValueLength>
thành giá trị phù hợp dựa trên yêu cầu của bạn.
Ví dụ: Nếu bạn cho rằng mình có thể cho phép một giá trị có độ dài tối đa là 90 ký tự, hãy sửa đổi chính sách như sau:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>5</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>90</StringValueLength>
</JSONThreatProtection>
Đối tượng JSON không hợp lệ
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Execution failed. reason: string: at line line-num", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Nội dung phản hồi mẫu cho Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Execution failed. reason: Expecting : at line 3",
"detail": {
"errorcode": "steps.jsonthreatprotection.ExecutionFailed"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu tải trọng thông báo đầu vào do phần tử <Source>
chỉ định trong chính sách JSONReturnProtection không phải là đối tượng JSON hợp lệ.
Chẩn đoán
Kiểm tra thông báo lỗi để xác định tên chính sách và số dòng nơi xảy ra lỗi. Trong ví dụ sau đây, tên chính sách là
JSON-Threat-Protection-1 and
dòng trong tải trọng2
.JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Kiểm tra số dòng cụ thể (được xác định ở Bước 1) của tải trọng đầu vào và kiểm tra xem đối tượng JSON đã được truyền vào tải trọng có thực sự là đối tượng JSON hợp lệ hay không.
Dưới đây là ví dụ về tải trọng đầu vào:
{ "Longitude": 6.11499, "Latitude" 50.76891 }
Trong tải trọng JSON hiển thị ở trên, dòng 3 không có
":"
(dấu hai chấm). Vì đây không phải là đối tượng JSON hợp lệ, bạn sẽ gặp lỗi:JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
Độ phân giải
Hãy đảm bảo tải trọng JSON đầu vào hợp lệ được truyền đến bất kỳ Proxy API nào có chứa chính sách JSON AeeGuard.
Đối với ví dụ mô tả ở trên, hãy sửa đổi tải trọng JSON như sau:
{
"Longitude": 6.11499,
"Latitude" : 50.76891
}
SourceUnavailable
Mã lỗi
steps.jsonthreatprotection.SourceUnavailable
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]:: Source[var_name] is not available" "detail": { "errorcode": "steps.jsonthreatprotection.SourceUnavailable" } } }
Nội dung phản hồi mẫu cho Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
Source requests is not available",
"detail": {
"errorcode": "steps.jsonthreatprotection.SourceUnavailable"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu biến thông báo được chỉ định trong phần tử <Source>
của chính sách JSON vẽ mối đe doạ:
- Ngoài phạm vi (không có trong quy trình cụ thể đang thực thi chính sách)
- Không phải là một trong các giá trị hợp lệ
request
,response
hoặcmessage
Ví dụ: lỗi này xảy ra nếu phần tử <Source>
trong chính sách được đặt thành một biến không tồn tại trong quy trình thực thi chính sách.
Chẩn đoán
Xác định tên chính sách và tên của biến Nguồn trong thông báo lỗi. Ví dụ: trong thông báo lỗi sau, tên chính sách là
JSON-Threat-Protection-1
và biến Nguồn làrequests
:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Kiểm tra giá trị được chỉ định cho phần tử
<Source>
đã xác định ở Bước 1.Trong ví dụ sau đây về chính sách JSON vết đe doạ, hãy thiết lập phần tử
<Source>
thànhrequests
.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>requests</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Giá trị hợp lệ của phần tử
<Source>
làrequest
,response
hoặcmessage
. Vì yêu cầu không phải là một giá trị hợp lệ và không tồn tại trong luồng đang thực thi chính sách, nên bạn sẽ gặp lỗi:JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
Độ phân giải
Đảm bảo rằng biến được đặt trong phần tử <Source>
của chính sách JSON AeeProtection không thành công được đặt thành request
, response
hoặc message
và tồn tại trong luồng mà chính sách này thực thi.
Để sửa ví dụ về chính sách JSON vết đe doạ ở trên, bạn có thể sửa đổi phần tử <Source>
để sử dụng biến request
vì phần tử này tồn tại trong quy trình yêu cầu:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>5</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>request</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>
NonMessageVariable
Mã lỗi
steps.jsonthreatprotection.NonMessageVariable
Nội dung phản hồi lỗi
{ "fault": { "faultstring": "JSONThreatProtection[policy_name]: Variable var_name does not resolve to a Message" "detail": { "errorcode": "steps.jsonthreatprotection.NonMessageVariable" } } }
Nội dung phản hồi mẫu cho Lỗi
{
"fault": {
"faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
Variable message.content does not resolve to a Message",
"detail": {
"errorcode": "steps.jsonthreatprotection.NonMessageVariable"
}
}
}
Nguyên nhân
Lỗi này xảy ra nếu bạn đặt phần tử <Source>
trong chính sách JSON AeeProtection thành một biến không thuộc loại thông báo.
Các biến loại thông báo đại diện cho toàn bộ yêu cầu và phản hồi HTTP. Các biến yêu cầu, phản hồi và thông báo của luồng API Apigee được tích hợp sẵn đều thuộc loại thông báo. Để tìm hiểu thêm về các biến thông báo, hãy xem Tài liệu tham khảo về biến.
Chẩn đoán
Xác định tên chính sách JSONBảo vệ toàn diện và tên của biến Nguồn trong thông báo lỗi. Ví dụ: trong thông báo lỗi sau, tên chính sách là
JSON-Threat-Protection-1
và biến Nguồn làmessage.content
:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Kiểm tra phần tử
<Source>
của chính sách JSONBảo vệ sự an toàn (xác định ở Bước 1).Trong ví dụ sau đây về chính sách JSON AeeProtection,
<Source>
được đặt thànhmessage.content
thay vìmessage
:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> <DisplayName>JSON Threat Protection-1</DisplayName> <Properties/> <ArrayElementCount>3</ArrayElementCount> <ContainerDepth>5</ContainerDepth> <ObjectEntryCount>5</ObjectEntryCount> <ObjectEntryNameLength>20</ObjectEntryNameLength> <Source>message.content</Source> <StringValueLength>50</StringValueLength> </JSONThreatProtection>
Vì
message.content
không thuộc loại thông báo, nên bạn sẽ gặp lỗi:JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
Độ phân giải
Hãy đảm bảo rằng bạn đã đặt phần tử <Source>
trong chính sách JSON vẽTAGProtection không thành công thành biến luồng loại thông báo tồn tại trong luồng mà chính sách thực thi.
Để sửa chính sách, bạn có thể sửa đổi phần tử <Source>
để chỉ định một biến thuộc loại thông báo. Ví dụ: trong lỗi JSONBảo vệ sự cố, bạn có thể chỉ định phần tử <Source>
là message
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
<DisplayName>JSON Threat Protection-1</DisplayName>
<Properties/>
<ArrayElementCount>3</ArrayElementCount>
<ContainerDepth>5</ContainerDepth>
<ObjectEntryCount>5</ObjectEntryCount>
<ObjectEntryNameLength>20</ObjectEntryNameLength>
<Source>message</Source>
<StringValueLength>50</StringValueLength>
</JSONThreatProtection>