আপনি 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 | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
| ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| টাইপ | স্ট্রিং |
<ArrayElementCount> এলিমেন্ট
অ্যারেতে অনুমোদিত সর্বাধিক এলিমেন্টের সংখ্যা নির্দিষ্ট করে।
<ArrayElementCount>20</ArrayElementCount>
| ডিফল্ট: | আপনি এই এলিমেন্ট উল্লেখ না করলে অথবা নেগেটিভ পূর্ণসংখ্যা উল্লেখ করলে, সিস্টেম কোনও সীমা প্রয়োগ করে না। |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: | পূর্ণসংখ্যা |
<ContainerDepth> এলিমেন্ট
সর্বাধিক অনুমোদিত কন্টেনমেন্ট ডেপথ নির্দিষ্ট করে, যেখানে কন্টেনার হল অবজেক্ট বা অ্যারে। যেমন, কোনও অবজেক্ট থাকা একটি অ্যারে, যার মধ্যে একটি অবজেক্ট আছে, তার ফলে কন্টেনমেন্ট ডেপথ ৩ হবে।
<ContainerDepth>10</ContainerDepth>
| ডিফল্ট: | আপনি এই এলিমেন্ট নির্দিষ্ট না করলে অথবা নেগেটিভ পূর্ণসংখ্যা নির্দিষ্ট করলে, সিস্টেম কোনও সীমা প্রয়োগ করে না। |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: | পূর্ণসংখ্যা |
<ObjectEntryCount> এলিমেন্ট
কোনও অবজেক্টে অনুমোদিত এন্ট্রির সর্বাধিক সংখ্যা নির্দিষ্ট করে।
<ObjectEntryCount>15</ObjectEntryCount>
| ডিফল্ট: | আপনি এই এলিমেন্ট নির্দিষ্ট না করলে অথবা নেগেটিভ পূর্ণসংখ্যা নির্দিষ্ট করলে, সিস্টেম কোনও সীমা প্রয়োগ করে না। |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: | পূর্ণসংখ্যা |
<ObjectEntryNameLength> এলিমেন্ট
কোনও অবজেক্টের মধ্যে প্রপার্টির নামের জন্য অনুমোদিত সর্বাধিক স্ট্রিংয়ের দৈর্ঘ্য নির্দিষ্ট করে।
<ObjectEntryNameLength>50</ObjectEntryNameLength>
| ডিফল্ট: | আপনি এই এলিমেন্ট উল্লেখ না করলে অথবা নেগেটিভ পূর্ণসংখ্যা উল্লেখ করলে, সিস্টেম কোনও সীমা প্রয়োগ করে না। |
| উপস্থিতি: | ঐচ্ছিক |
| টাইপ: | পূর্ণসংখ্যা |
<Source> এলিমেন্ট
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>
স্কিমা
ব্যবহার সংক্রান্ত নোট
XML-ভিত্তিক পরিষেবার মতো, জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন (JSON) কাজ করে এমন API-তে কন্টেন্ট-লেভেল অ্যাটাক হওয়ার সম্ভাবনা থাকে। সহজ JSON অ্যাটাক এমন স্ট্রাকচার ব্যবহার করার চেষ্টা করে যা JSON পার্সারকে পরিচালনা করতে দেয় না এবং এর ফলে পরিষেবা ক্র্যাশ করে ও অ্যাপ্লিকেশন-লেভেল ডেনিয়াল-অফ-সার্ভিস অ্যাটাক হয়। সব সেটিংসই ঐচ্ছিক এবং সম্ভাব্য দুর্বলতার বিরুদ্ধে আপনার পরিষেবার প্রয়োজনীয়তা অপ্টিমাইজ করার জন্য টিউন করা উচিত।