আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
কী
অ্যারে এবং স্ট্রিং-এর মতো বিভিন্ন JSON কাঠামোর উপর সীমা নির্ধারণ করার সুযোগ দিয়ে এটি কন্টেন্ট-স্তরের আক্রমণের ঝুঁকি হ্রাস করে।
ভিডিও: JSONThreatProtection পলিসি কীভাবে আপনাকে কন্টেন্ট-লেভেল অ্যাটাক থেকে API সুরক্ষিত করতে সক্ষম করে, সে সম্পর্কে আরও জানতে একটি সংক্ষিপ্ত ভিডিও দেখুন।
ভিডিও: Apigee ক্রস-ক্লাউড এপিআই প্ল্যাটফর্মের উপর এই সংক্ষিপ্ত ভিডিওটি দেখুন।
উপাদান রেফারেন্স
এলিমেন্ট রেফারেন্সটি 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 | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
| ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| টাইপ | স্ট্রিং |
<অ্যারেএলিমেন্টকাউন্ট> উপাদান
একটি অ্যারেতে অনুমোদিত উপাদানের সর্বোচ্চ সংখ্যা নির্দিষ্ট করে।
<ArrayElementCount>20</ArrayElementCount>
| ডিফল্ট: | আপনি যদি এই উপাদানটি নির্দিষ্ট না করেন, অথবা কোনো ঋণাত্মক পূর্ণসংখ্যা নির্দিষ্ট করেন, তাহলে সিস্টেম কোনো সীমা আরোপ করে না। |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | পূর্ণসংখ্যা |
<ContainerDepth> উপাদান
এটি সর্বোচ্চ অনুমোদিত ধারণ গভীরতা নির্দিষ্ট করে, যেখানে ধারকগুলো হলো অবজেক্ট বা অ্যারে। উদাহরণস্বরূপ, একটি অ্যারের মধ্যে যদি একটি অবজেক্ট থাকে এবং সেই অবজেক্টটির মধ্যে আবার আরেকটি অবজেক্ট থাকে, তাহলে ধারণ গভীরতা হবে ৩।
<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 অবজেক্ট থাকে। | build |
steps.jsonthreatprotection.SourceUnavailable | 500 | এই ত্রুটিটি ঘটে যদি <Source> উপাদানে নির্দিষ্ট করা বার্তা পরিবর্তনশীল হয়:
| build |
steps.jsonthreatprotection.NonMessageVariable | 500 | এই ত্রুটিটি ঘটে যদি <Source> উপাদানটি একটি ভেরিয়েবলে সেট করা হয় যা বার্তা টাইপ নয়। | build |
স্থাপনার ত্রুটি
কোনোটিই নয়।
ফল্ট ভেরিয়েবল
যখন এই নীতি একটি ত্রুটি ট্রিগার করে তখন এই ভেরিয়েবলগুলি সেট করা হয়৷ আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।
| ভেরিয়েবল | যেখানে | উদাহরণ |
|---|---|---|
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>
স্কিমা
ব্যবহারের নির্দেশাবলী
এক্সএমএল-ভিত্তিক পরিষেবাগুলির মতোই, জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (JSON) সমর্থনকারী এপিআইগুলিও কন্টেন্ট-লেভেল আক্রমণের ঝুঁকিতে থাকে। সাধারণ JSON আক্রমণগুলি এমন কাঠামো ব্যবহার করার চেষ্টা করে যা JSON পার্সারকে অভিভূত করে একটি পরিষেবা ক্র্যাশ করতে এবং অ্যাপ্লিকেশন-লেভেল ডিনায়াল-অফ-সার্ভিস আক্রমণ ঘটাতে পারে। সমস্ত সেটিংস ঐচ্ছিক এবং সম্ভাব্য দুর্বলতার বিরুদ্ধে আপনার পরিষেবার প্রয়োজনীয়তাগুলি অপ্টিমাইজ করার জন্য সেগুলিকে টিউন করা উচিত।