JSONThreatProtection নীতি

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

কি

অ্যারে এবং স্ট্রিংগুলির মতো বিভিন্ন JSON কাঠামোতে সীমা নির্দিষ্ট করতে আপনাকে সক্ষম করে বিষয়বস্তু-স্তরের আক্রমণ দ্বারা সৃষ্ট ঝুঁকিকে কমিয়ে দেয়।

ভিডিও: কীভাবে JSONThreatProtection নীতি আপনাকে বিষয়বস্তু-স্তরের আক্রমণের বিরুদ্ধে APIগুলি সুরক্ষিত করতে সক্ষম করে সে সম্পর্কে আরও জানতে একটি ছোট ভিডিও দেখুন৷

ভিডিও: Apigee ক্রস-ক্লাউড API প্ল্যাটফর্মে এই ছোট ভিডিওটি দেখুন।

উপাদান রেফারেন্স

উপাদান রেফারেন্স JSONThreatProtection নীতির উপাদান এবং বৈশিষ্ট্য বর্ণনা করে।

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
   <DisplayName>JSONThreatProtection 1</DisplayName>
   <ArrayElementCount>20</ArrayElementCount>
   <ContainerDepth>10</ContainerDepth>
   <ObjectEntryCount>15</ObjectEntryCount>
   <ObjectEntryNameLength>50</ObjectEntryNameLength>
   <Source>request</Source>
   <StringValueLength>500</StringValueLength>
</JSONThreatProtection>

<JSONThreatProtection> বৈশিষ্ট্য

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1"> 

নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:

বৈশিষ্ট্য বর্ণনা ডিফল্ট উপস্থিতি
name

নীতির অভ্যন্তরীণ নাম। name বৈশিষ্ট্যের মানটিতে অক্ষর, সংখ্যা, স্পেস, হাইফেন, আন্ডারস্কোর এবং পিরিয়ড থাকতে পারে। এই মান 255 অক্ষরের বেশি হতে পারে না।

ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে <DisplayName> উপাদানটি ব্যবহার করুন।

N/A প্রয়োজন
continueOnError

একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে false সেট করুন৷ এটি বেশিরভাগ নীতির জন্য প্রত্যাশিত আচরণ।

একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে true সেট করুন৷

মিথ্যা ঐচ্ছিক
enabled

নীতি প্রয়োগ করতে true সেট করুন৷

নীতি বন্ধ করতে false সেট করুন। নীতিটি প্রবাহের সাথে সংযুক্ত থাকলেও তা কার্যকর করা হবে না।

সত্য ঐচ্ছিক
async

এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷

মিথ্যা অবচয়

<DisplayName> উপাদান

ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।

<DisplayName>Policy Display Name</DisplayName>
ডিফল্ট

N/A

আপনি এই উপাদানটি বাদ দিলে, নীতির name বৈশিষ্ট্যের মান ব্যবহার করা হবে।

উপস্থিতি ঐচ্ছিক
টাইপ স্ট্রিং

<ArrayElementCount> উপাদান

একটি অ্যারেতে অনুমোদিত উপাদানগুলির সর্বাধিক সংখ্যা নির্দিষ্ট করে৷

<ArrayElementCount>20</ArrayElementCount>
ডিফল্ট: আপনি যদি এই উপাদানটি নির্দিষ্ট না করেন, অথবা যদি আপনি একটি ঋণাত্মক পূর্ণসংখ্যা উল্লেখ করেন, তবে সিস্টেমটি একটি সীমা প্রয়োগ করে না।
উপস্থিতি: ঐচ্ছিক
প্রকার: পূর্ণসংখ্যা

<ContainerDepth> উপাদান

সর্বাধিক অনুমোদিত কন্টেনমেন্ট গভীরতা নির্দিষ্ট করে, যেখানে ধারকগুলি বস্তু বা অ্যারে। উদাহরণ স্বরূপ, একটি অবজেক্ট ধারণ করে এমন একটি অ্যারে যা একটি অবজেক্ট ধারণ করে একটি কনটেইনমেন্টের গভীরতা 3 হবে।

<ContainerDepth>10</ContainerDepth>
ডিফল্ট: আপনি যদি এই উপাদানটি নির্দিষ্ট না করেন, অথবা যদি আপনি একটি ঋণাত্মক পূর্ণসংখ্যা উল্লেখ করেন, তাহলে সিস্টেমটি কোনো সীমা বলবৎ করে না।
উপস্থিতি: ঐচ্ছিক
প্রকার: পূর্ণসংখ্যা

<ObjectEntryCount> উপাদান

একটি বস্তুতে অনুমোদিত সর্বোচ্চ সংখ্যক এন্ট্রি নির্দিষ্ট করে।

<ObjectEntryCount>15</ObjectEntryCount>
ডিফল্ট: আপনি যদি এই উপাদানটি নির্দিষ্ট না করেন, অথবা যদি আপনি একটি ঋণাত্মক পূর্ণসংখ্যা উল্লেখ করেন, তাহলে সিস্টেমটি কোনো সীমা বলবৎ করে না।
উপস্থিতি: ঐচ্ছিক
প্রকার: পূর্ণসংখ্যা

<ObjectEntryNameLength> উপাদান

একটি বস্তুর মধ্যে একটি সম্পত্তি নামের জন্য অনুমোদিত সর্বাধিক স্ট্রিং দৈর্ঘ্য নির্দিষ্ট করে৷

<ObjectEntryNameLength>50</ObjectEntryNameLength>
ডিফল্ট: আপনি যদি এই উপাদানটি নির্দিষ্ট না করেন, অথবা যদি আপনি একটি ঋণাত্মক পূর্ণসংখ্যা উল্লেখ করেন, তবে সিস্টেমটি একটি সীমা প্রয়োগ করে না।
উপস্থিতি: ঐচ্ছিক
প্রকার: পূর্ণসংখ্যা

<উৎস> উপাদান

JSON পেলোড আক্রমণের জন্য বার্তা স্ক্রীন করা হবে। এটি সাধারণত request জন্য সেট করা হয়, কারণ আপনাকে সাধারণত ক্লায়েন্ট অ্যাপ থেকে অন্তর্মুখী অনুরোধগুলি যাচাই করতে হবে। message সেট করা হলে, অনুরোধের প্রবাহের সাথে সংযুক্ত হলে এই উপাদানটি স্বয়ংক্রিয়ভাবে অনুরোধ বার্তাটির মূল্যায়ন করবে এবং প্রতিক্রিয়া প্রবাহের সাথে সংযুক্ত হলে প্রতিক্রিয়া বার্তাটি।

<Source>request</Source>
ডিফল্ট: অনুরোধ
উপস্থিতি: ঐচ্ছিক
প্রকার:

স্ট্রিং

বৈধ মান: অনুরোধ, প্রতিক্রিয়া, বা বার্তা।

<StringValueLength> উপাদান

একটি স্ট্রিং মানের জন্য অনুমোদিত সর্বোচ্চ দৈর্ঘ্য নির্দিষ্ট করে।

<StringValueLength>500</StringValueLength>
ডিফল্ট: আপনি যদি এই উপাদানটি নির্দিষ্ট না করেন, অথবা যদি আপনি একটি ঋণাত্মক পূর্ণসংখ্যা উল্লেখ করেন, তবে সিস্টেমটি একটি সীমা প্রয়োগ করে না।
উপস্থিতি: ঐচ্ছিক
প্রকার: পূর্ণসংখ্যা

ত্রুটি উল্লেখ

এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
steps.jsonthreatprotection.ExecutionFailed 500 JSONThreatProtection নীতিটি বিভিন্ন ধরনের ExecutionFailed এরর ফেলতে পারে। এই ত্রুটিগুলির বেশিরভাগই ঘটে যখন নীতিতে সেট করা একটি নির্দিষ্ট থ্রেশহোল্ড অতিক্রম করা হয়। এই ধরনের ত্রুটিগুলির মধ্যে রয়েছে: অবজেক্ট এন্ট্রি নামের দৈর্ঘ্য , অবজেক্ট এন্ট্রি গণনা , অ্যারে উপাদান গণনা , ধারক গভীরতা , স্ট্রিং স্ট্রিং মান দৈর্ঘ্য । এই ত্রুটিটি ঘটে যখন পেলোডে একটি অবৈধ JSON অবজেক্ট থাকে।
steps.jsonthreatprotection.SourceUnavailable 500 এই ত্রুটিটি ঘটে যদি <Source> উপাদানে নির্দিষ্ট করা বার্তা পরিবর্তনশীল হয়:
  • সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে)
  • request , response বা message বৈধ মানগুলির মধ্যে একটি নয়৷
steps.jsonthreatprotection.NonMessageVariable 500 এই ত্রুটিটি ঘটে যদি <Source> উপাদানটি একটি ভেরিয়েবলে সেট করা হয় যা বার্তা টাইপ নয়।

স্থাপনার ত্রুটি

কোনোটিই নয়।

ফল্ট ভেরিয়েবল

যখন এই নীতি একটি ত্রুটি ট্রিগার করে তখন এই ভেরিয়েবলগুলি সেট করা হয়৷ আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।

ভেরিয়েবল কোথায় উদাহরণ
fault.name=" fault_name " fault_name হল ফল্টের নাম, যা উপরে রানটাইম ত্রুটির সারণীতে তালিকাভুক্ত করা হয়েছে। ফল্ট নামটি ফল্ট কোডের শেষ অংশ। fault.name Matches "SourceUnavailable"
jsonattack. policy_name .failed policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যা ত্রুটিটি ফেলেছে। jsonattack.JTP-SecureRequest.failed = true

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

{
  "fault": {
    "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2",
    "detail": {
      "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
    }
  }
}

উদাহরণ দোষ নিয়ম

<FaultRule name="JSONThreatProtection Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ExecutionFailed") </Condition>
    </Step>
    <Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>

,

এই বিভাগটি ফল্ট কোড এবং ত্রুটির বার্তাগুলি বর্ণনা করে যেগুলি ফেরত দেওয়া হয় এবং ত্রুটি ভেরিয়েবলগুলি যেগুলি এজ দ্বারা সেট করা হয় যখন এই নীতিটি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷

রানটাইম ত্রুটি

নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷

ফল্ট কোড HTTP স্থিতি কারণ ঠিক করুন
steps.jsonthreatprotection.ExecutionFailed 500 JSONThreatProtection নীতিটি বিভিন্ন ধরনের ExecutionFailed এরর ফেলতে পারে। এই ত্রুটিগুলির বেশিরভাগই ঘটে যখন নীতিতে সেট করা একটি নির্দিষ্ট থ্রেশহোল্ড অতিক্রম করা হয়। এই ধরনের ত্রুটিগুলির মধ্যে রয়েছে: অবজেক্ট এন্ট্রি নামের দৈর্ঘ্য , অবজেক্ট এন্ট্রি গণনা , অ্যারে উপাদান গণনা , ধারক গভীরতা , স্ট্রিং স্ট্রিং মান দৈর্ঘ্য । এই ত্রুটিটি ঘটে যখন পেলোডে একটি অবৈধ JSON অবজেক্ট থাকে।
steps.jsonthreatprotection.SourceUnavailable 500 এই ত্রুটিটি ঘটে যদি <Source> উপাদানে নির্দিষ্ট করা বার্তা পরিবর্তনশীল হয়:
  • সুযোগের বাইরে (নির্দিষ্ট প্রবাহে উপলব্ধ নয় যেখানে নীতিটি কার্যকর করা হচ্ছে)
  • request , response বা message বৈধ মানগুলির মধ্যে একটি নয়৷
steps.jsonthreatprotection.NonMessageVariable 500 এই ত্রুটিটি ঘটে যদি <Source> উপাদানটি একটি ভেরিয়েবলে সেট করা হয় যা বার্তা টাইপ নয়।

স্থাপনার ত্রুটি

কোনোটিই নয়।

ফল্ট ভেরিয়েবল

যখন এই নীতি একটি ত্রুটি ট্রিগার করে তখন এই ভেরিয়েবলগুলি সেট করা হয়৷ আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।

ভেরিয়েবল কোথায় উদাহরণ
fault.name=" fault_name " fault_name হল ফল্টের নাম, যা উপরে রানটাইম ত্রুটির সারণীতে তালিকাভুক্ত করা হয়েছে। ফল্ট নামটি ফল্ট কোডের শেষ অংশ। fault.name Matches "SourceUnavailable"
jsonattack. policy_name .failed policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যা ত্রুটিটি ফেলেছে। jsonattack.JTP-SecureRequest.failed = true

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

{
  "fault": {
    "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2",
    "detail": {
      "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
    }
  }
}

উদাহরণ দোষ নিয়ম

<FaultRule name="JSONThreatProtection Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ExecutionFailed") </Condition>
    </Step>
    <Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>

স্কিমাস

ব্যবহারের নোট

XML-ভিত্তিক পরিষেবাগুলির মতো, APIগুলি যেগুলি JavaScript অবজেক্ট নোটেশন (JSON) সমর্থন করে তা বিষয়বস্তু-স্তরের আক্রমণগুলির জন্য ঝুঁকিপূর্ণ৷ সাধারণ JSON আক্রমণগুলি এমন কাঠামো ব্যবহার করার চেষ্টা করে যা JSON পার্সারদের একটি পরিষেবা ক্র্যাশ করতে এবং অ্যাপ্লিকেশন-স্তরের অস্বীকৃতি-অফ-সার্ভিস আক্রমণকে প্ররোচিত করে। সমস্ত সেটিংস ঐচ্ছিক এবং সম্ভাব্য দুর্বলতার বিরুদ্ধে আপনার পরিষেবার প্রয়োজনীয়তা অপ্টিমাইজ করতে টিউন করা উচিত৷

সম্পর্কিত বিষয়

JSONtoXML নীতি

XMLThreatProtection নীতি

নিয়মিত এক্সপ্রেশন সুরক্ষা নীতি