JSON হুমকি সুরক্ষা রানটাইম ত্রুটি সমস্যা সমাধান

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান
তথ্য

কার্যকর করা ব্যর্থ হয়েছে৷

ত্রুটি কোড

steps.jsonthreatprotection.ExecutionFailed

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]: error_description
          at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

ত্রুটির প্রকার এবং সম্ভাব্য কারণ

JSONThreatProtection নীতিটি বিভিন্ন ধরনের ExecutionFailed এরর ফেলতে পারে। নীচের সারণীতে বিভিন্ন ধরণের ত্রুটি এবং তাদের সম্ভাব্য কারণগুলি তালিকাভুক্ত করা হয়েছে:

ত্রুটির ধরন কারণ
অবজেক্ট এন্ট্রি নামের দৈর্ঘ্য অতিক্রম করেছে একটি অবজেক্টের এন্ট্রি নামে অনুমোদিত সর্বাধিক স্ট্রিং দৈর্ঘ্য অতিক্রম করেছে৷
অবজেক্ট এন্ট্রির সংখ্যা ছাড়িয়ে গেছে একটি বস্তুতে অনুমোদিত এন্ট্রির সর্বোচ্চ সংখ্যা অতিক্রম করেছে৷
অ্যারে উপাদান সংখ্যা ছাড়িয়ে গেছে একটি অ্যারেতে অনুমোদিত উপাদানগুলির সর্বাধিক সংখ্যা অতিক্রম করেছে৷
ধারক গভীরতা অতিক্রম সর্বাধিক অনুমোদিত নেস্টেড গভীরতা অতিক্রম করেছে৷
স্ট্রিং মান দৈর্ঘ্য অতিক্রম করেছে৷ একটি স্ট্রিং মানের জন্য অনুমোদিত সর্বোচ্চ দৈর্ঘ্য অতিক্রম করেছে৷
অবৈধ JSON অবজেক্ট ইনপুট JSON পেলোড অবৈধ৷

অবজেক্ট এন্ট্রি নামের দৈর্ঘ্য অতিক্রম করেছে

ত্রুটি প্রতিক্রিয়া বডি

{
    "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"
        }
    }
}

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

{
    "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"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটে যদি <Source> উপাদান দ্বারা নির্দিষ্ট করা ইনপুট বার্তা পেলোডে একটি সম্পত্তির নাম সহ একটি JSON অবজেক্ট থাকে যা <ObjectEntryNameLength> উপাদানে নির্দিষ্ট করা সর্বোচ্চ দৈর্ঘ্য অতিক্রম করে।

উদাহরণস্বরূপ, যদি <ObjectEntryNameLength> উপাদানটি নীতিতে 5 হিসাবে নির্দিষ্ট করা হয়, কিন্তু ইনপুট বার্তা পেলোডে একটি JSON বৈশিষ্ট্য থাকে যার নাম 5টি অক্ষর অতিক্রম করে, তাহলে এই ত্রুটিটি নিক্ষেপ করা হয়।

রোগ নির্ণয়

  1. JSONThreatProtection নীতির নাম এবং লাইন নম্বর যেখানে দীর্ঘ এন্ট্রি নামটি রয়েছে তা সনাক্ত করতে ত্রুটি বার্তাটি পরীক্ষা করুন৷ উদাহরণস্বরূপ, নিম্নলিখিত ত্রুটি বার্তায়, JSONThreatProtection নীতির নাম JSON-Threat-Protection-1 এবং পেলোডে লাইন নম্বর হল 2।

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    
  2. ধাপ 1-এ আপনি যে নীতি চিহ্নিত করেছেন তা পরীক্ষা করে দেখুন এবং <ObjectEntryNameLength> উপাদানে উল্লেখ করা মানটি নোট করুন।

    উদাহরণস্বরূপ, নিম্নলিখিত JSONThreatProtection নীতিতে, <ObjectEntryNameLength> 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. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ 1-এ চিহ্নিত) পরীক্ষা করুন এবং বস্তুর নামের দৈর্ঘ্য <ObjectEntryNameLength> উপাদানে (ধাপ 2-এ চিহ্নিত) উল্লেখিত মানের চেয়ে বেশি কিনা তা পরীক্ষা করুন। যদি বস্তুর নামের দৈর্ঘ্য সেই সংখ্যাকে অতিক্রম করে, তবে এটি ত্রুটির কারণ।

    এখানে ইনপুট পেলোডের একটি উদাহরণ রয়েছে:

    {
       "number" : 500,
       "string" : "text"
    }
    

    উপরে দেখানো JSON পেলোডের লাইন 2-এ number নামে একটি সম্পত্তি রয়েছে যার 6টি অক্ষর রয়েছে (নামের দৈর্ঘ্য 6)। যেহেতু অবজেক্টের নামের দৈর্ঘ্য 5 এর বেশি ( <ObjectEntryNameLength> উপাদানের জন্য নির্দিষ্ট মান) আপনি নিম্নলিখিত ত্রুটিটি পান:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry name
    length at line 2
    

রেজোলিউশন

JSONThreatProtection নীতির উদ্দেশ্য যদি নির্দিষ্ট মান অতিক্রম করে এমন অবজেক্ট এন্ট্রি নাম সহ পেলোড থেকে রক্ষা করা হয় তাহলে ত্রুটি বার্তা প্রত্যাশিত৷ এই ক্ষেত্রে, কোন অতিরিক্ত পদক্ষেপের প্রয়োজন হয় না।

যাইহোক, যদি আপনি নির্ধারণ করেন যে কোন ফলাফল ছাড়াই পেলোডে দীর্ঘ অবজেক্ট এন্ট্রি নামগুলি নির্দিষ্ট করা যেতে পারে, তাহলে আপনার প্রয়োজনীয়তার উপর ভিত্তি করে একটি উপযুক্ত মান <ObjectEntryNameLength> পরিবর্তন করুন।

উদাহরণস্বরূপ, আপনি যদি মনে করেন যে আপনি 10 অক্ষরের দৈর্ঘ্য পর্যন্ত অবজেক্টের নাম অনুমোদন করতে পারেন, তাহলে JSONThreatProtection নীতিটি নিম্নরূপ পরিবর্তন করুন:

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

অবজেক্ট এন্ট্রির সংখ্যা ছাড়িয়ে গেছে

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded object entry count at line line_num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

{
    "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"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটে যদি <Source> উপাদান দ্বারা নির্দিষ্ট করা ইনপুট বার্তা পেলোডে একটি JSON অবজেক্ট থাকে যাতে নীতির <ObjectEntryCount> এলিমেন্টে উল্লেখ করা মানের চেয়ে বেশি এন্ট্রি (বৈশিষ্ট্য) থাকে।

উদাহরণস্বরূপ, যদি <ObjectEntryCount> উপাদানটি 5 হয়, কিন্তু ইনপুট JSON পেলোডে 5টির বেশি এন্ট্রি থাকে, তাহলে এই ত্রুটিটি নিক্ষেপ করা হয়।

রোগ নির্ণয়

  1. JSONThreatProtection নীতির নাম এবং লাইন নম্বর যেখানে প্রবেশের সংখ্যা অতিক্রম করেছে তা সনাক্ত করতে ত্রুটি বার্তাটি পরীক্ষা করুন৷ উদাহরণস্বরূপ, নিম্নলিখিত ত্রুটি বার্তায়, নীতির নাম হল JSON-Threat-Protection-1 এবং পেলোডে লাইন নম্বর হল 7 :

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count
    at line 7
    
  2. নীতির <ObjectEntryCount> উপাদানে উল্লেখ করা মানটির একটি নোট করুন (ধাপে 1-এ চিহ্নিত)।

    নিম্নলিখিত নীতি উদাহরণে, <ObjectEntryCount> 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. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ 1-এ চিহ্নিত) পরীক্ষা করুন এবং পেলোডে সত্তার সংখ্যা <ObjectEntryCount> উপাদানের (ধাপ 2-এ চিহ্নিত) জন্য নির্দিষ্ট করা মানের চেয়ে বেশি কিনা তা পরীক্ষা করুন। যদি অবজেক্টের সংখ্যা অবজেক্ট এন্ট্রি কাউন্টের চেয়ে বেশি হয়, তবে এটি ত্রুটির কারণ।

    এখানে ইনপুট পেলোডের একটি উদাহরণ রয়েছে:

    {
    "name" : "John",
    "id" : 234687,
    "age" : 31,
    "city" : "New York",
    "country" : "USA",
    "company" : "Google"
    }
    

    উপরে দেখানো JSON পেলোডে, 6 তম এন্ট্রি লাইন # 7 (কোম্পানি) এ ঘটে। যেহেতু ইনপুট JSON পেলোডে অবজেক্ট এন্ট্রির সংখ্যা 5 এর বেশি ( <ObjectEntryCount> উপাদানের জন্য নির্দিষ্ট মান) আপনি নিম্নলিখিত ত্রুটিটি পান:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded object entry count at
    line 7
    

রেজোলিউশন

যদি JSONThreatProtection নীতিটি নির্দিষ্ট থ্রেশহোল্ড অতিক্রম করে এমন অনেকগুলি অবজেক্ট এন্ট্রি সহ পেলোড থেকে রক্ষা করার উদ্দেশ্যে করা হয়, তাহলে ত্রুটি বার্তা প্রত্যাশিত৷ এই ক্ষেত্রে, আপনাকে কোন অতিরিক্ত পদক্ষেপ নিতে হবে না।

যাইহোক, যদি আপনি নির্ধারণ করেন যে কোনো ফলাফল ছাড়াই পেলোডে আরও অবজেক্ট এন্ট্রি অন্তর্ভুক্ত করা যেতে পারে, তাহলে আপনার প্রয়োজনীয়তার ভিত্তিতে <ObjectEntryCount> একটি উপযুক্ত মান পরিবর্তন করুন।

উদাহরণস্বরূপ, আপনি যদি মনে করেন যে আপনি 10টি অবজেক্ট এন্ট্রির অনুমতি দিতে পারেন, তাহলে JSONThreatProtection নীতিটি নিম্নরূপ পরিবর্তন করুন:

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

অ্যারে উপাদান সংখ্যা ছাড়িয়ে গেছে

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded array element count at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

{
    "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"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটবে যদি <Source> উপাদান দ্বারা নির্দিষ্ট করা ইনপুট বার্তা পেলোডে নীতির <ArrayElementCount> উপাদানে নির্দিষ্ট সংখ্যার চেয়ে বেশি উপাদান সহ একটি JSON অ্যারে থাকে।

উদাহরণস্বরূপ, যদি <ArrayElementCount> উপাদানটি 3 হিসাবে নির্দিষ্ট করা হয়, কিন্তু ইনপুট পেলোডে 3টির বেশি উপাদান সহ একটি JSON অ্যারে থাকে, তাহলে এই ত্রুটিটি নিক্ষেপ করা হয়।

রোগ নির্ণয়

  1. নীতির নাম এবং লাইন নম্বর সনাক্ত করতে ত্রুটি বার্তা পরীক্ষা করুন যেখানে অ্যারের দৈর্ঘ্য অতিক্রম করা হয়েছে। উদাহরণ স্বরূপ, নিম্নলিখিত ত্রুটি বার্তায়, নীতির নাম হল JSON-Threat-Protection-1 এবং পেলোডে লাইন নম্বর হল 3 :

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count at line 3
    
  2. নীতির <ArrayElementCount> উপাদানের জন্য নির্দিষ্ট করা মানটির একটি নোট করুন (ধাপ 1 এ চিহ্নিত)।

    নিম্নলিখিত JSONThreatProtection নীতি উদাহরণে, <ArrayElementCount> 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. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ 1-এ চিহ্নিত) পরীক্ষা করুন এবং সেখানে নির্দিষ্ট করা অ্যারের <ArrayElementCount> উপাদানে (ধাপ 2-এ চিহ্নিত) উল্লেখ করা সংখ্যার চেয়ে বেশি সংখ্যা আছে কিনা তা পরীক্ষা করুন। যদি অ্যারে উপাদানের সংখ্যা গণনা অতিক্রম করে, তাহলে এটি ত্রুটির কারণ।

    এখানে ইনপুট পেলোডের একটি উদাহরণ রয়েছে:

    {
     "name":"Ford",
     "models":[
        "Mustang",
        "Endeavour",
        "Fiesta",
        "EcoSport",
        "Focus"
     ]
    }
    

    উপরে দেখানো JSON পেলোডটিতে 3 লাইনে অ্যারে নামের models 5টি উপাদান রয়েছে৷ কারণ অ্যারের উপাদানগুলির সংখ্যা 3-এর বেশি ( <ArrayElementCount> উপাদানের জন্য নির্দিষ্ট মান) আপনি নিম্নলিখিত ত্রুটিটি পান:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded array element count
    at line 3
    

রেজোলিউশন

যদি JSONThreatProtection নীতি নির্দিষ্ট অ্যারে গণনা থ্রেশহোল্ড সহ পেলোড থেকে রক্ষা করার উদ্দেশ্যে হয়, তাহলে ত্রুটি বার্তা প্রত্যাশিত৷ এই ক্ষেত্রে, কোন অতিরিক্ত পদক্ষেপের প্রয়োজন নেই।

যাইহোক, যদি আপনি নির্ধারণ করেন যে একটি অ্যারেতে অনেক বেশি সংখ্যক উপাদান অনুমোদিত হতে পারে, তাহলে আপনার প্রয়োজনীয়তার উপর ভিত্তি করে একটি উপযুক্ত মান <ArrayElementCount> পরিবর্তন করুন।

উদাহরণস্বরূপ, আপনি যদি মনে করেন যে আপনি 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>5</ArrayElementCount>
    <ContainerDepth>12</ContainerDepth>
    <ObjectEntryCount>5</ObjectEntryCount>
    <ObjectEntryNameLength>6</ObjectEntryNameLength>
    <Source>request</Source>
    <StringValueLength>50</StringValueLength>
</JSONThreatProtection>

ধারক গভীরতা অতিক্রম

ত্রুটি প্রতিক্রিয়া বডি

রানটাইম ট্রাফিক নিম্নলিখিত ত্রুটি সহ একটি 500 প্রতিক্রিয়া কোড প্রদান করে:

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded container depth at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

{
    "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"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটবে যদি <Source> উপাদান দ্বারা নির্দিষ্ট করা ইনপুট বার্তা পেলোডে একটি JSON অবজেক্ট থাকে যাতে JSON উপাদান রয়েছে যার মধ্যে একটি কন্টেইনার গভীরতা রয়েছে যা নীতির <ContainerDepth> উপাদানে নির্দিষ্ট কন্টেইনার গভীরতাকে অতিক্রম করে। ধারক গভীরতা হল JSON উপাদানগুলির জন্য সর্বাধিক অনুমোদিত নেস্টেড গভীরতা৷ উদাহরণস্বরূপ, একটি অবজেক্ট ধারণ করে এমন একটি অ্যারে যা একটি অবজেক্টকে ধারণ করে 3 এর গভীরতায় পরিণত হবে।

উদাহরণস্বরূপ, যদি <ContainerDepth> উপাদানটি 3 হয়, কিন্তু ইনপুট পেলোডে একটি কন্টেইনার গভীরতা থাকে যা এই সীমা অতিক্রম করে, তাহলে এই ত্রুটিটি নিক্ষেপ করা হবে।

রোগ নির্ণয়

  1. JSONThreatProtection নীতির নাম এবং কন্টেইনার গভীরতা অতিক্রম করা লাইন নম্বর সনাক্ত করতে ত্রুটি বার্তা পরীক্ষা করুন। উদাহরণস্বরূপ, নিম্নলিখিত ত্রুটি বার্তায়, নীতির নাম JSON-Threat-Protection-1 এবং পেলোডে লাইন নম্বর হল 5

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    
  2. <ContainerDepth> উপাদানের জন্য নির্দিষ্ট মান একটি নোট করুন (পদক্ষেপ 1 এ চিহ্নিত)।

    নিম্নলিখিত JSONThreatProtection নীতির উদাহরণে, <ContainerDepth> 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. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ 1-এ চিহ্নিত) পরীক্ষা করুন এবং পেলোডে কন্টেইনারের গভীরতা <ContainerDepth> উপাদানে (ধাপ 2-এ চিহ্নিত) উল্লেখিত মানের চেয়ে বেশি কিনা তা পরীক্ষা করুন। যদি ধারক গভীরতা গণনা অতিক্রম করে, তাহলে এটি ত্রুটির কারণ।

    এখানে ইনপুট পেলোডের একটি উদাহরণ রয়েছে:

    {
     "ContainerDepth2":[ {
           "ContainerDepth4":[
              {
                 "ContainerDepth6":[
                    "1",
                    "2"
                 ]
              }
           ]
        }
     ]
    }
    

    উপরে দেখানো JSON পেলোডের 5 লাইনে একটি কন্টেইনার গভীরতা 6 রয়েছে। যেহেতু গভীরতা 5-এর বেশি, তাই JSONThreatProtection নীতির <ContainerDepth> উপাদানের জন্য নির্দিষ্ট করা মান আপনি নিম্নলিখিত ত্রুটি পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded container depth at
    line 5
    

রেজোলিউশন

যদি JSONThreatProtection নীতিটি নির্দিষ্ট মান অতিক্রম করে এমন কন্টেইনার গভীরতা সহ পেলোড থেকে রক্ষা করার উদ্দেশ্যে হয়, তাহলে ত্রুটি বার্তা প্রত্যাশিত৷ এই ক্ষেত্রে, কোন অতিরিক্ত পদক্ষেপের প্রয়োজন নেই।

যাইহোক, যদি আপনি নির্ধারণ করেন যে একটি উচ্চতর ধারক গভীরতা গ্রহণযোগ্য, তাহলে আপনার প্রয়োজনীয়তার উপর ভিত্তি করে একটি উপযুক্ত মান <ContainerDepth> পরিবর্তন করুন।

উদাহরণস্বরূপ, আপনি যদি মনে করেন যে আপনি 10 পর্যন্ত কন্টেইনার গভীরতার অনুমতি দিতে পারেন, তাহলে নীতিটি নিম্নরূপ পরিবর্তন করুন:

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

স্ট্রিং মান দৈর্ঘ্য অতিক্রম করেছে৷

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: JSONThreatProtection[policy_name]:
          Exceeded string value length at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

{
    "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"
        }
    }
}

কারণ

এই ত্রুটিটি ঘটবে যদি <Source> উপাদান দ্বারা নির্দিষ্ট করা ইনপুট বার্তা পেলোডে JSON উপাদান থাকে যেগুলির মান <StringValueLength> উপাদান দ্বারা অনুমোদিত অক্ষরের চেয়ে বেশি থাকে।

উদাহরণস্বরূপ, যদি নীতিতে <StringValueLength> উপাদানটি 50 এ সেট করা থাকে, কিন্তু ইনপুট পেলোডে এক বা একাধিক উপাদান থাকে যার মান 50টির বেশি অক্ষর ধারণ করে, তাহলে এই ত্রুটিটি নিক্ষেপ করা হয়।

রোগ নির্ণয়

  1. নীতির নাম এবং লাইন নম্বর সনাক্ত করতে ত্রুটি বার্তা পরীক্ষা করুন যেখানে স্ট্রিং দৈর্ঘ্য অতিক্রম করেছে। নিম্নলিখিত উদাহরণে পলিসির নাম JSON-Threat-Protection-1 and পেলোড 3 -এ লাইন।

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length at line 3
    
  2. তে <StringValueLength> উপাদানের জন্য নির্দিষ্ট করা মানটির একটি নোট করুন (ধাপে 1 এ চিহ্নিত)।

    নিম্নলিখিত JSONThreatProtection নীতির উদাহরণে, <StringValueLength> 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. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ 1-এ চিহ্নিত) পরীক্ষা করুন এবং মানের দৈর্ঘ্য <StringValueLength> উপাদানের (ধাপ 2-এ চিহ্নিত) জন্য নির্দিষ্ট অক্ষরের সংখ্যার চেয়ে বেশি কিনা তা পরীক্ষা করুন। যদি মানের দৈর্ঘ্য সীমা অতিক্রম করে, তাহলে এটি ত্রুটির কারণ।

    এখানে ইনপুট পেলোডের একটি উদাহরণ রয়েছে:

    {
      "Country": "New Zealand",
      "Place Name": "Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu"
    }
    

    উপরে দেখানো JSON পেলোডটিতে Place Name নামে একটি বস্তু রয়েছে যার মান Taumatawhakatangihangakoauauotamateaturipukakapikimaungahoronukupokaiwhenuakitanatahu এর লাইন 3-এ 85টি অক্ষর রয়েছে। যেহেতু মানের দৈর্ঘ্য 50-এর বেশি, তাই <StringValueLength> -এ উল্লেখ করা মানটি নিম্নোক্ত ত্রুটিটি পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    JSONThreatProtection[JSON-Threat-Protection-1]: Exceeded string value length
    at line 3
    

রেজোলিউশন

যদি JSONThreatProtection নীতিটি একটি নির্দিষ্ট স্ট্রিং দৈর্ঘ্য অতিক্রমকারী মান সহ পেলোড থেকে রক্ষা করার উদ্দেশ্যে হয়, তাহলে ত্রুটি বার্তা প্রত্যাশিত৷ এই ক্ষেত্রে, কোন অতিরিক্ত পদক্ষেপের প্রয়োজন নেই।

যাইহোক, যদি আপনি নির্ধারণ করেন যে পেলোডে একটি দীর্ঘ মানের দৈর্ঘ্য নির্দিষ্ট করা যেতে পারে, তাহলে আপনার প্রয়োজনীয়তার উপর ভিত্তি করে একটি উপযুক্ত মান <StringValueLength> পরিবর্তন করুন।

উদাহরণস্বরূপ, যদি আপনি মনে করেন যে আপনি 90 দৈর্ঘ্য পর্যন্ত একটি মান অনুমোদন করতে পারেন, তাহলে নীতিটি নিম্নরূপ পরিবর্তন করুন:

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

বৈধ JSON অবজেক্ট নয়

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Execution failed. reason: string: at line line-num",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Execution failed. reason: Expecting : at line 3",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
        }
    }
}

কারণ

JSONThreatProtection নীতিতে <Source> উপাদান দ্বারা নির্দিষ্ট করা ইনপুট বার্তা পেলোড একটি বৈধ JSON অবজেক্ট না হলে এই ত্রুটি ঘটে।

রোগ নির্ণয়

  1. নীতির নাম এবং লাইন নম্বর সনাক্ত করতে ত্রুটি বার্তা পরীক্ষা করুন যেখানে ত্রুটি ঘটেছে। নিম্নলিখিত উদাহরণে পলিসির নাম JSON-Threat-Protection-1 and পেলোড 2 এ লাইন।

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason: Expecting : at line 3
    
  2. ইনপুট পেলোডের নির্দিষ্ট লাইন নম্বর (ধাপ 1-এ চিহ্নিত) পরীক্ষা করুন এবং পেলোডে পাস করা JSON অবজেক্টটি সত্যিই একটি বৈধ JSON অবজেক্ট কিনা তা পরীক্ষা করুন।

    এখানে ইনপুট পেলোডের একটি উদাহরণ রয়েছে:

    {
      "Longitude": 6.11499,
      "Latitude"  50.76891
    }
    

    উপরে দেখানো JSON পেলোডে, লাইন 3-এ ":" (কোলন) নেই। যেহেতু এটি একটি বৈধ JSON অবজেক্ট নয়, আপনি ত্রুটিটি পান:

    JSONThreatProtection[JSON-Threat-Protection-1]: Execution failed. reason:
    Expecting : at line 3
    

রেজোলিউশন

JSONThreatProtection নীতি অন্তর্ভুক্ত যেকোন API প্রক্সিতে একটি বৈধ ইনপুট JSON পেলোড পাস করা হয়েছে তা নিশ্চিত করুন।

উপরে বর্ণিত উদাহরণের জন্য, JSON পেলোডটি নিম্নরূপ পরিবর্তন করুন:

{
    "Longitude": 6.11499,
  "Latitude" : 50.76891
}

উৎস অনুপলব্ধ

ত্রুটি কোড

steps.jsonthreatprotection.SourceUnavailable

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]::
          Source[var_name] is not available"
        "detail": {
            "errorcode": "steps.jsonthreatprotection.SourceUnavailable"
        }
    }
}

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]::
          Source requests is not available",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.SourceUnavailable"
        }
    }
}

কারণ

JSONThreatProtection নীতির <Source> উপাদানে নির্দিষ্ট করা বার্তা ভেরিয়েবল যদি হয় তাহলে এই ত্রুটিটি ঘটে:

  • সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে)
  • request , response বা message বৈধ মানগুলির মধ্যে একটি নয়৷

উদাহরণস্বরূপ, এই ত্রুটিটি ঘটে যদি নীতির <Source> উপাদানটি এমন একটি ভেরিয়েবলে সেট করা থাকে যা নীতিটি কার্যকর করার প্রবাহে বিদ্যমান নেই।

রোগ নির্ণয়

  1. ত্রুটি বার্তা থেকে নীতির নাম এবং উৎস ভেরিয়েবলের নাম সনাক্ত করুন। উদাহরণস্বরূপ, নিম্নলিখিত ত্রুটি বার্তায়, নীতির নাম হল JSON-Threat-Protection-1 এবং উৎস পরিবর্তনশীল হল requests :

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    
  2. ধাপ 1 এ চিহ্নিত <Source> উপাদানের জন্য নির্দিষ্ট মান পরীক্ষা করুন।

    নিম্নলিখিত JSONThreatProtection নীতির উদাহরণে, <Source> উপাদানটি 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>
    

    <Source> উপাদানের বৈধ মান হল request , response বা message । যেহেতু অনুরোধগুলি একটি বৈধ মান নয় এবং যে প্রবাহে নীতিটি কার্যকর করা হচ্ছে সেখানে বিদ্যমান নেই, আপনি ত্রুটিটি পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]:: Source requests is not available
    

রেজোলিউশন

নিশ্চিত করুন যে ব্যর্থ JSONThreatProtection নীতির <Source> উপাদানে সেট করা ভেরিয়েবলটি হয় request , response বা message সেট করা হয়েছে এবং নীতিটি কার্যকর করার প্রবাহে বিদ্যমান রয়েছে।

উপরে দেখানো উদাহরণ JSONThreatProtection নীতি সংশোধন করতে, আপনি request ভেরিয়েবল ব্যবহার করার জন্য <Source> উপাদানটি সংশোধন করতে পারেন, কারণ এটি অনুরোধের প্রবাহে বিদ্যমান:

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

NonMessage Variable

ত্রুটি কোড

steps.jsonthreatprotection.NonMessageVariable

ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[policy_name]:
          Variable var_name does not resolve to a Message"
        "detail": {
            "errorcode": "steps.jsonthreatprotection.NonMessageVariable"
        }
    }
}

উদাহরণ ত্রুটি প্রতিক্রিয়া বডি

{
    "fault": {
        "faultstring": "JSONThreatProtection[JSON-Threat-Protection-1]:
          Variable message.content does not resolve to a Message",
        "detail": {
            "errorcode": "steps.jsonthreatprotection.NonMessageVariable"
        }
    }
}

কারণ

JSONThreatProtection নীতির <Source> উপাদানটি এমন একটি পরিবর্তনশীলে সেট করা থাকলে এই ত্রুটিটি ঘটে যা বার্তার টাইপ নয়।

মেসেজ টাইপ ভেরিয়েবল সম্পূর্ণ HTTP অনুরোধ এবং প্রতিক্রিয়া উপস্থাপন করে। অন্তর্নির্মিত Apigee এজ ফ্লো ভেরিয়েবল অনুরোধ, প্রতিক্রিয়া, এবং বার্তা টাইপের বার্তা। বার্তা ভেরিয়েবল সম্পর্কে আরও জানতে, ভেরিয়েবল রেফারেন্স দেখুন।

রোগ নির্ণয়

  1. ত্রুটি বার্তা থেকে JSONThreatProtection নীতির নাম এবং উত্স ভেরিয়েবলের নাম সনাক্ত করুন৷ উদাহরণস্বরূপ, নিম্নলিখিত ত্রুটি বার্তায়, নীতির নাম JSON-Threat-Protection-1 এবং উত্স পরিবর্তনশীল হল message.content :

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does not resolve to a Message
    
  2. JSONThreatProtection নীতির <Source> উপাদান পরীক্ষা করুন (ধাপে 1 এ চিহ্নিত)।

    নিম্নলিখিত JSONThreatProtection নীতির উদাহরণে, <Source> message পরিবর্তে message.content এ সেট করা হয়েছে:

    <?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 টাইপের বার্তা নয়, আপনি ত্রুটিটি পাবেন:

    JSONThreatProtection[JSON-Threat-Protection-1]: Variable message.content does
    not resolve to a Message
    

রেজোলিউশন

নিশ্চিত করুন যে ব্যর্থ JSONThreatProtection নীতিতে <Source> উপাদানটি একটি বার্তা প্রকারের ফ্লো ভেরিয়েবলে সেট করা আছে যা নীতিটি কার্যকর করার প্রবাহে বিদ্যমান।

নীতি সংশোধন করার জন্য, আপনি একটি পরিবর্তনশীল নির্দিষ্ট করতে <Source> উপাদান পরিবর্তন করতে পারেন যা টাইপ বার্তা। উদাহরণস্বরূপ, ব্যর্থ JSONThreatProtection এ আপনি <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>