Khắc phục lỗi khi bắt đầu chạy tính năng Bảo vệ khỏi mối đe doạ JSON

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

  1. 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
    
  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ành 5:

    <?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>
    
  3. 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

  1. 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
    
  2. 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ành 5:

    <?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>
    
  3. 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

  1. 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
    
  2. 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ành 3:

    <?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>
    
  3. 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>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

  1. 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
    
  2. 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ành 5:

    <?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>
    
  3. 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

  1. 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 anddòng trong tải trọng 3.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
    
  2. 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ành 50:

    <?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>
    
  3. 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

  1. 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 anddòng trong tải trọng 2.

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. 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ặc message

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

  1. 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
    
  2. 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ành requests.

    <?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>request, response hoặc message. 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

  1. 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
    
  2. 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ành message.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>
    

    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>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>