আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
কী
একটি বার্তা থেকে তথ্য (যেমন, URI পাথ, কোয়েরি প্যারাম, হেডার, ফর্ম প্যারাম, ভেরিয়েবল, XML পেলোড, বা JSON পেলোড) সংগ্রহ করে এবং পূর্বনির্ধারিত রেগুলার এক্সপ্রেশনের সাথে সেই বিষয়বস্তু মূল্যায়ন করে। যদি কোনো নির্দিষ্ট রেগুলার এক্সপ্রেশনের মূল্যায়ন সত্য হয়, তবে বার্তাটিকে হুমকি হিসেবে বিবেচনা করা হয় এবং তা বাতিল করা হয়।
ভিডিও
রেগুলার এক্সপ্রেশন প্রোটেকশন পলিসি সম্পর্কে আরও জানতে নিম্নলিখিত ভিডিওগুলো দেখুন।
| ভিডিও | বর্ণনা |
|---|---|
| SQL ইনজেকশন আক্রমণ থেকে সুরক্ষা (নিউ এজ) | New Edge experience UI-তে Regular Expression Protection পলিসি ব্যবহার করে SQL ইনজেকশন আক্রমণ থেকে সুরক্ষা নিন। |
| SQL ইনজেকশন আক্রমণ থেকে সুরক্ষা (ক্লাসিক এজ) | ক্লাসিক এজ UI-তে রেগুলার এক্সপ্রেশন প্রোটেকশন পলিসি ব্যবহার করে SQL ইনজেকশন আক্রমণ থেকে সুরক্ষা নিন। |
নমুনা
গিটহাব
গিটহাবে থাকা regex-protection স্যাম্পলটি দেখায় কিভাবে একটি কোয়েরি প্যারামিটারের মাধ্যমে চালানো সম্ভাব্য SQL ইনজেকশন আক্রমণ প্রতিহত করা যায়। এছাড়াও, স্যাম্পলটি একটি সাধারণ 400 এরর স্ট্যাটাস সেট করার একটি ভালো পদ্ধতি প্রদর্শন করে, যা হ্যাকারদের রেসপন্স থেকে কোনো দরকারি তথ্য সংগ্রহ করা থেকে বিরত রাখে।
জাভাস্ক্রিপ্টে আক্রমণ সুরক্ষা অন্তর্ভুক্ত রয়েছে
<RegularExpressionProtection name="JsonPathRegExProtection"> <DisplayName>Regular Expression Protection 1</DisplayName> <Source>request</Source> <JSONPayload escapeSlashCharacter="true"> <JSONPath> <Expression>$</Expression> <Pattern><\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*> </Pattern> <Pattern>n\s*\\\\\s*slash</Pattern> <Pattern>n\s*\/\s*slash</Pattern> <Pattern>n\s*\\"\s*quotes</Pattern> <Pattern>n\s*\\b\s*space</Pattern> <Pattern>n\s*\\f\s*forwardfeed</Pattern> <Pattern>n\s*\\n\s*newline</Pattern> <Pattern>n\s*\\r\s*carria</Pattern> <Pattern>n\s*\\t\s*tab</Pattern> <Pattern>n\s*\\uFFFF\s*hex</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
উপরের নমুনাটি দেখায় কিভাবে জাভাস্ক্রিপ্ট ইনক্লুড অ্যাটাকের জন্য JSON পেলোড মূল্যায়ন করতে RegularExpressionProtection পলিসি ব্যবহার করতে হয়। বিশেষত, <JSONPath> / <Expression> দ্বারা নিষ্কাশিত বিষয়বস্তু <JSONPath> / <Pattern> -এ থাকা রেগুলার এক্সপ্রেশনের সাথে মিলিয়ে মূল্যায়ন করা হয়।
আপনার <JSONPath> / <Pattern> এর রেগুলার এক্সপ্রেশনে যদি XML-সংরক্ষিত অক্ষর (", &, ', <, বা .) থাকে, তাহলে পলিসি XML কনফিগারেশন ফাইলে অন্তর্ভুক্ত করার আগে আপনাকে অবশ্যই এটিকে XML-এনকোড করতে হবে। উদাহরণস্বরূপ, উপরের নমুনায়, রেগুলার এক্সপ্রেশন <\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*> কে XML-এনকোড করে <\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*>
এছাড়াও, যদি আপনার রেগুলার এক্সপ্রেশনে ফরওয়ার্ড স্ল্যাশ (/) থাকে, তাহলে আপনাকে অবশ্যই <JSONPayload> escapeSlashCharacter অ্যাট্রিবিউটটিকে true সেট করে সেগুলোকে এস্কেপ করতে হবে।
কেস-ইনসেনসিটিভ ম্যাচিং
কেস-ইনসেনসিটিভ ম্যাচিং করা একটি সাধারণ ব্যবহার। এখানে একটি উদাহরণ দেওয়া হলো, যেখানে আপনি (?i) কনস্ট্রাক্টটি ব্যবহার করে একটি রেগুলার এক্সপ্রেশনে এটি করতে পারেন। যেমন, এই উদাহরণে DELETE , delete , এবং Delete মান true হবে।
<Pattern>[\s]*(?i)((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b))</Pattern>
রেগুলার এক্সপ্রেশন সুরক্ষা নীতি সম্পর্কে
Apigee Edge আপনাকে রেগুলার এক্সপ্রেশন কনফিগার করার সুযোগ দেয়, যা রানটাইমে এপিআই ট্র্যাফিকের উপর মূল্যায়ন করে নির্দিষ্ট প্যাটার্ন অনুসরণকারী সাধারণ কন্টেন্ট-স্তরের হুমকি শনাক্ত করতে পারে।
রেগুলার এক্সপ্রেশন , বা সংক্ষেপে রেজেক্স , হলো কতগুলো স্ট্রিং-এর একটি সেট যা কোনো স্ট্রিং-এর মধ্যে একটি প্যাটার্ন নির্দিষ্ট করে। রেগুলার এক্সপ্রেশন ব্যবহার করে প্রোগ্রামের মাধ্যমে কোনো কন্টেন্টের প্যাটার্ন মূল্যায়ন করা যায়। উদাহরণস্বরূপ, একটি ইমেল অ্যাড্রেস সঠিকভাবে গঠিত কিনা তা নিশ্চিত করতে রেগুলার এক্সপ্রেশন ব্যবহার করা যেতে পারে। আরও তথ্যের জন্য, জাভা টিউটোরিয়ালের 'রেগুলার এক্সপ্রেশন' অংশটি দেখুন।
RegularExpressionProtection-এর সবচেয়ে সাধারণ ব্যবহার হলো ক্ষতিকর বিষয়বস্তুর জন্য JSON এবং XML পেলোড মূল্যায়ন করা।
কোনো রেগুলার এক্সপ্রেশনই সব কন্টেন্ট-ভিত্তিক আক্রমণ নির্মূল করতে পারে না, এবং গভীর প্রতিরক্ষা ব্যবস্থা সক্রিয় করার জন্য একাধিক কৌশল একত্রিত করা উচিত। এই বিভাগে কন্টেন্ট বাদ দেওয়ার জন্য কিছু প্রস্তাবিত প্যাটার্ন বর্ণনা করা হয়েছে।
বর্জন প্যাটার্নের উদাহরণ
পলিসির এক্সএমএল কনফিগারেশন ফাইলে রেগুলার এক্সপ্রেশনগুলো অবশ্যই এক্সএমএল-এনকোড করতে হবে।
| নাম | রেগুলার এক্সপ্রেশন |
|---|---|
| SQL ইনজেকশন | [\s]*((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b)) |
| সার্ভার-সাইড ইনক্লুড ইনজেকশন | <!--#(include|exec|echo|config|printenv)\s+.* XML এনকোড করা: <!--#(include|exec|echo|config|printenv)\s+.* |
| এক্সপাথ সংক্ষিপ্ত সিনট্যাক্স ইনজেকশন | (/(@?[\w_?\w:\*]+(\[[^]]+\])*)?)+ |
| এক্সপাথ এক্সপান্ডেড সিনট্যাক্স ইনজেকশন | /?(ancestor(-or-self)?|descendant(-or-self)?|following(-sibling)) |
| জাভাস্ক্রিপ্ট ইনজেকশন | <\s*script\b[^>]*>[^<]+<\s*/\s*script\s*> XML এনকোড করা: <\s*script\b[^>]*>[^<]+<\s*/\s*script\s*> |
| জাভা এক্সেপশন ইনজেকশন | .*?Exception in thread.* |
XML বা JSON পেলোড সহ একটি অনুরোধে Content-Type হেডার সেট করুন।
রেগুলার এক্সপ্রেশন প্রোটেকশন পলিসির পেলোডে নিম্নলিখিত উপাদানগুলো অন্তর্ভুক্ত থাকতে পারে:
-
<XMLPayload>এলিমেন্ট: এটি নির্দিষ্ট করে যে, একটি XML পেলোড থেকে তথ্য আহরণ করে প্রদত্ত রেগুলার এক্সপ্রেশনের সাপেক্ষে তা মূল্যায়ন করতে হবে।যদি আপনি পলিসিতে
<XMLPayload>ব্যবহার করেন, তাহলে রিকোয়েস্টেরContent-Typeহেডারটি অবশ্যইapplication/xmlবাtext/xmlএর মতো একটি XML কন্টেন্ট-টাইপ হতে হবে। -
<JSONPayload>এলিমেন্ট: এটি নির্দিষ্ট করে যে, একটি JSON পেলোড থেকে তথ্য আহরণ করে প্রদত্ত রেগুলার এক্সপ্রেশনের সাপেক্ষে মূল্যায়ন করতে হবে।যদি আপনি পলিসিতে
<JSONPayload>ব্যবহার করেন, তাহলে রিকোয়েস্টেরContent-Typeহেডারটি অবশ্যইapplication/jsonএর মতো একটি JSON কন্টেন্ট-টাইপ হতে হবে।
সাধারণত আপনি XML অথবা JSON গ্রহণ করার জন্য একটি API ডিজাইন করেন। তবে, এমন পরিস্থিতিও হতে পারে যেখানে API-টি উভয়ই গ্রহণ করে। সেক্ষেত্রে আপনি একটি রেগুলার এক্সপ্রেশন প্রোটেকশন পলিসি সংজ্ঞায়িত করতে পারেন যা <XMLPayload> এবং <JSONPayload> উভয় এলিমেন্ট ব্যবহার করে। Content-Type হেডারের মানের উপর ভিত্তি করে একটি নির্দিষ্ট অনুরোধের জন্য শুধুমাত্র একটি এলিমেন্ট প্রযোজ্য হবে।
উপাদান রেফারেন্স
এলিমেন্ট রেফারেন্সটি RegularExpressionProtection পলিসির উপাদান এবং অ্যাট্রিবিউটগুলো বর্ণনা করে।
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection 1</DisplayName> <Source>response</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <URIPath> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </URIPath> <QueryParam name="a-query-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </QueryParam> <Header name="a-header"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Header> <FormParam name="a-form-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </FormParam> <Variable name="request.content"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Variable> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> <JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
<RegularExpressionProtection> অ্যাট্রিবিউট
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
নিম্নলিখিত সারণী সমস্ত নীতির মূল উপাদানগুলির জন্য সাধারণ বৈশিষ্ট্যগুলি বর্ণনা করে:
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
name | নীতির অভ্যন্তরীণ নাম। ঐচ্ছিকভাবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে | N/A | প্রয়োজন |
continueOnError | একটি নীতি ব্যর্থ হলে একটি ত্রুটি ফেরত দিতে একটি নীতি ব্যর্থ হওয়ার পরেও ফ্লো এক্সিকিউশন চালিয়ে যেতে | মিথ্যা | ঐচ্ছিক |
enabled | নীতি প্রয়োগ করতে নীতি বন্ধ করতে | সত্য | ঐচ্ছিক |
async | এই বৈশিষ্ট্যটি অবমূল্যায়ন করা হয়েছে৷ | মিথ্যা | অবচয় |
<DisplayName> উপাদান
ম্যানেজমেন্ট UI প্রক্সি এডিটরে নীতিটিকে একটি ভিন্ন, প্রাকৃতিক-ভাষা নামের সাথে লেবেল করতে name বৈশিষ্ট্য ছাড়াও ব্যবহার করুন।
<DisplayName>Policy Display Name</DisplayName>
| ডিফল্ট | N/A আপনি এই উপাদানটি বাদ দিলে, নীতির |
|---|---|
| উপস্থিতি | ঐচ্ছিক |
| টাইপ | স্ট্রিং |
<উৎস> উপাদান
যে বার্তাটি থেকে তথ্য আহরণ করতে হবে, তা নির্দেশ করে।
যদি <Source> এলিমেন্টটি বাদ দেওয়া হয়, তাহলে এর ডিফল্ট মান হয় ` message । উদাহরণস্বরূপ, <Source>message</Source> । যখন message সেট করা হয়, তখন পলিসিটি কোনো রিকোয়েস্ট ফ্লো-এর সাথে সংযুক্ত হওয়ার সময় রিকোয়েস্ট মেসেজটিকে সোর্স হিসেবে ব্যবহার করে। একইভাবে, পলিসিটি কোনো রেসপন্স ফ্লো-এর সাথে সংযুক্ত হওয়ার সময় রেসপন্স মেসেজটিকে সোর্স হিসেবে ব্যবহার করে।
যদি উৎস বার্তাটি সমাধান করা না যায় অথবা এটি কোনো অ-বার্তা প্রকারে সমাধান হয়, তাহলে নীতিটি একটি ত্রুটি ফেরত দেয়।
<Source>response</Source>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
<IgnoreUnresolvedVariables> উপাদান
পলিসিটি যখন কোনো সমাধান-অযোগ্য ভেরিয়েবলের সম্মুখীন হয়, তখন এটি কোনো ত্রুটি ফেরত দেবে কিনা তা নির্ধারণ করে।
যদি false (ডিফল্ট) সেট করা থাকে, তাহলে কোনো সমাধান-অযোগ্য ভেরিয়েবল পাওয়া গেলে পলিসিটি একটি ত্রুটি ফেরত দেয়। যদি true সেট করা থাকে, তাহলে সমাধান-অযোগ্য ভেরিয়েবলটিকে একটি খালি স্ট্রিং (Null) হিসেবে গণ্য করা হয়।
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
| ডিফল্ট: | মিথ্যা |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | বুলিয়ান |
<URIPath> উপাদান
এটি নির্দিষ্ট করে যে অনুরোধ URI পাথ থেকে তথ্য সংগ্রহ করে প্রদত্ত রেগুলার এক্সপ্রেশনের সাথে মিলিয়ে মূল্যায়ন করতে হবে। আপনাকে অবশ্যই মেলানোর জন্য একটি রেগুলার এক্সপ্রেশন প্যাটার্ন নির্দিষ্ট করে অন্তত একটি <Pattern> এলিমেন্ট প্রদান করতে হবে।
<URIPath> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </URIPath>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | প্রযোজ্য নয় |
<QueryParam> উপাদান
এটি নির্দিষ্ট করে যে অনুরোধ কোয়েরি প্যারামিটার থেকে তথ্য সংগ্রহ করে প্রদত্ত রেগুলার এক্সপ্রেশনের সাথে মিলিয়ে মূল্যায়ন করতে হবে। আপনাকে অবশ্যই মেলানোর জন্য একটি রেগুলার এক্সপ্রেশন প্যাটার্ন নির্দিষ্ট করে অন্তত একটি <Pattern> এলিমেন্ট প্রদান করতে হবে।
<QueryParam name="a-query-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </QueryParam>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | প্রযোজ্য নয় |
বৈশিষ্ট্য
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| নাম | অনুরোধ কোয়েরি প্যারামিটারের নাম, যেখান থেকে প্রদত্ত রেগুলার এক্সপ্রেশনগুলোর সাথে মূল্যায়নের জন্য তথ্য আহরণ করতে হবে। | প্রযোজ্য নয় | প্রয়োজনীয় |
<হেডার> উপাদান
এটি নির্দিষ্ট করে যে অনুরোধ এবং প্রতিক্রিয়া হেডার থেকে তথ্য বের করে প্রদত্ত রেগুলার এক্সপ্রেশনের সাথে মিলিয়ে মূল্যায়ন করতে হবে। আপনাকে অবশ্যই মেলানোর জন্য একটি রেগুলার এক্সপ্রেশন প্যাটার্ন নির্দিষ্ট করে অন্তত একটি <Pattern> এলিমেন্ট প্রদান করতে হবে।
<Header name="a-header"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Header>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | প্রযোজ্য নয় |
বৈশিষ্ট্য
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| নাম | অনুরোধ এবং প্রতিক্রিয়া হেডারের নাম, যেখান থেকে প্রদত্ত রেগুলার এক্সপ্রেশনের সাথে মূল্যায়নের জন্য তথ্য আহরণ করতে হবে। | প্রযোজ্য নয় | প্রয়োজনীয় |
<ফর্মপ্যারাম> উপাদান
এটি নির্দিষ্ট করে যে অনুরোধ ফর্ম প্যারামিটার থেকে তথ্য সংগ্রহ করে প্রদত্ত রেগুলার এক্সপ্রেশনের সাথে মিলিয়ে মূল্যায়ন করতে হবে। আপনাকে অবশ্যই অন্তত একটি <Pattern> এলিমেন্ট প্রদান করতে হবে, যা মেলানোর জন্য একটি রেগুলার এক্সপ্রেশন প্যাটার্ন নির্দিষ্ট করে।
<FormParam name="a-form-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </FormParam>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | প্রযোজ্য নয় |
বৈশিষ্ট্য
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| নাম | অনুরোধ ফর্ম প্যারামিটারের নাম, যেখান থেকে প্রদত্ত রেগুলার এক্সপ্রেশনগুলোর সাথে মূল্যায়নের জন্য তথ্য আহরণ করতে হবে। | প্রযোজ্য নয় | প্রয়োজনীয় |
<পরিবর্তনশীল> উপাদান
এটি নির্দিষ্ট করে যে প্রদত্ত ভেরিয়েবল থেকে তথ্য আহরণ করতে হবে এবং প্রদত্ত রেগুলার এক্সপ্রেশনগুলোর সাপেক্ষে তা মূল্যায়ন করতে হবে।
<Variable name="request.content"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Variable>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | প্রযোজ্য নয় |
বৈশিষ্ট্য
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| নাম | প্রদত্ত রেগুলার এক্সপ্রেশনগুলোর সাপেক্ষে মূল্যায়নের জন্য যে ভেরিয়েবল থেকে তথ্য আহরণ করতে হবে, তার নাম। | প্রযোজ্য নয় | প্রয়োজনীয় |
<XMLPayload> উপাদান
এটি নির্দিষ্ট করে যে একটি XML পেলোড থেকে তথ্য নিষ্কাশন করতে হবে এবং প্রদত্ত রেগুলার এক্সপ্রেশনগুলোর সাপেক্ষে তা মূল্যায়ন করতে হবে।
<XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | প্রযোজ্য নয় |
<XMLPayload>/<Namespaces> উপাদান
XPath মূল্যায়নে ব্যবহৃত নেমস্পেসগুলো নির্দিষ্ট করে।
<XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
<XMLPayload>/<Namespaces>/<Namespace> উপাদান
XPath মূল্যায়নে ব্যবহৃত প্রতিটি নেমস্পেস নির্দিষ্ট করে।<Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
বৈশিষ্ট্য
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| উপসর্গ | প্রদত্ত নেমস্পেসকে নির্দিষ্ট করতে সাহায্য করার জন্য একটি প্রিফিক্স প্রদান করে। | প্রযোজ্য নয় | প্রয়োজনীয় |
<XMLPayload>/<XPath> উপাদান
যে XPath-টি মূল্যায়ন করা হবে তা নির্দিষ্ট করে।<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | প্রযোজ্য নয় |
<XMLPayload>/<XPath>/<Expression> উপাদান
ভেরিয়েবলের জন্য সংজ্ঞায়িত XPath এক্সপ্রেশনটি নির্দিষ্ট করে। শুধুমাত্র XPath 1.0 এক্সপ্রেশন সমর্থিত। উদাহরণস্বরূপ,<Expression>/company/employee[@age>=$request.header.age]</Expression> সেইসব কর্মচারীদের বিবরণ বের করে আনে যাদের বয়স request.header.age এ নির্দিষ্ট করা মানের চেয়ে বেশি বা সমান। <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
<XMLPayload>/<XPath>/<Type> উপাদান
ডেটাটাইপ নির্দিষ্ট করে।<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
| ডিফল্ট: | স্ট্রিং |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
| বৈধ মান: | স্ট্রিং। বৈধ মানগুলোর মধ্যে রয়েছে |
<XMLPayload>/<XPath>/<Pattern> উপাদান
রেগুলার এক্সপ্রেশন প্যাটার্ন নির্ধারণ করে। যদি আপনার <Pattern> এলিমেন্টের কোনো রেগুলার এক্সপ্রেশনে XML-সংরক্ষিত অক্ষর (", &, ', <, বা .) থাকে, তবে সেটি অন্তর্ভুক্ত করার আগে আপনাকে অবশ্যই XML-এনকোড করতে হবে।
<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | প্রয়োজনীয় |
| প্রকার: | স্ট্রিং |
<JSONPayload> উপাদান
এটি নির্দিষ্ট করে যে একটি JSON পেলোড থেকে তথ্য নিষ্কাশন করতে হবে এবং প্রদত্ত রেগুলার এক্সপ্রেশনগুলোর সাপেক্ষে তা মূল্যায়ন করতে হবে।
<JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | প্রযোজ্য নয় |
বৈশিষ্ট্য
| বৈশিষ্ট্য | বর্ণনা | ডিফল্ট | উপস্থিতি |
|---|---|---|---|
| পালানো স্ল্যাশ ক্যারেক্টার | | সত্য | ঐচ্ছিক |
<JSONPayload>/<JSONPath>/<Expression> উপাদান
ভেরিয়েবলটির জন্য সংজ্ঞায়িত JSONPath এক্সপ্রেশনটি নির্দিষ্ট করে।
<JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | ঐচ্ছিক |
| প্রকার: | স্ট্রিং |
<JSONPayload>/<JSONPath>/<Pattern> উপাদান
রেগুলার এক্সপ্রেশন প্যাটার্ন নির্ধারণ করে। যদি আপনার <Pattern> এলিমেন্টের কোনো রেগুলার এক্সপ্রেশনে XML-সংরক্ষিত অক্ষর (", &, ', <, বা .) থাকে, তবে সেটি অন্তর্ভুক্ত করার আগে আপনাকে অবশ্যই XML-এনকোড করতে হবে।
<JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath>
| ডিফল্ট: | প্রযোজ্য নয় |
| উপস্থিতি: | প্রয়োজনীয় |
| প্রকার: | স্ট্রিং |
ত্রুটির রেফারেন্স
এই বিভাগে ত্রুটি কোড এবং বার্তা ফেরত এবং এজ দ্বারা সেট করা ত্রুটি ভেরিয়েবল বর্ণনা করে যখন এই নীতি একটি ত্রুটি ট্রিগার করে৷ এই তথ্যটি জানা গুরুত্বপূর্ণ যে আপনি ত্রুটিগুলি পরিচালনা করার জন্য ত্রুটির নিয়ম তৈরি করছেন কিনা। আপনি যদি একটি ত্রুটি ক্যাপচার করতে চান এবং আপনার নিজস্ব কাস্টম ত্রুটি বাড়াতে চান, তাহলে নীতির মূল উপাদানটিতে continueOnError="true" অ্যাট্রিবিউট সেট করুন। আরও জানতে, নীতিগত ত্রুটি এবং হ্যান্ডলিং ফল্ট সম্পর্কে আপনার যা জানা দরকার তা দেখুন৷
এজ নীতিগুলি থেকে ফিরে আসা ত্রুটিগুলি ত্রুটি কোড রেফারেন্সে বর্ণিত একটি সামঞ্জস্যপূর্ণ বিন্যাস অনুসরণ করে৷
রানটাইম ত্রুটি
নীতি কার্যকর করার সময় এই ত্রুটিগুলি ঘটতে পারে৷
| ভুল সংকেত | বার্তা |
|---|---|
| কার্যকর করা ব্যর্থ হয়েছে৷ | RegularExpressionProtection Step Definition {0} কার্যকর করতে ব্যর্থ হয়েছে৷ কারণ: {1} |
| প্রতিষ্ঠা ব্যর্থ হয়েছে৷ | RegularExpressionProtection স্টেপ ডেফিনিশন ইনস্ট্যান্ট করতে ব্যর্থ হয়েছে {0} |
| NonMessage Variable | পরিবর্তনশীল {0} কোনো বার্তার সমাধান করে না |
| SourceMessageNotAvailable | RegularExpressionProtection ধাপ সংজ্ঞার জন্য {0} বার্তা উপলব্ধ নয় {1} |
| হুমকি সনাক্ত করা হয়েছে | রেগুলার এক্সপ্রেশন থ্রেট {0} এ সনাক্ত করা হয়েছে: regex: {1} ইনপুট: {2} |
| পরিবর্তনশীল রেজোলিউশন ব্যর্থ হয়েছে | পরিবর্তনশীল {0} সমাধান করতে ব্যর্থ হয়েছে |
স্থাপনার ত্রুটি
| ভুল সংকেত | বার্তা | ঠিক করুন |
|---|---|---|
| নোডেসেটে কনভার্ট করা যাবে না | RegularExpressionProtection {0}: xpath {1}-এর ফলাফল নোডসেটে রূপান্তর করা যাবে না। প্রসঙ্গ {2} | build |
| সদৃশ উপসর্গ | RegularExpressionProtection {0}: ডুপ্লিকেট প্রিফিক্স {1} | build |
| EmptyJSONPathExpression | RegularExpressionProtection {0}: খালি JSONPath এক্সপ্রেশন | build |
| EmptyXPathExpression | রেগুলার এক্সপ্রেশন প্রোটেকশন {0}: খালি XPath এক্সপ্রেশন | build |
| অবৈধ রেগুলার এক্সপ্রেশন | RegularExpressionProtection {0}: অবৈধ রেগুলার এক্সপ্রেশন {1}, প্রসঙ্গ {2} | build |
| JSONPath কম্পাইলেশন ব্যর্থ হয়েছে | RegularExpressionProtection {0}: jsonpath {1} কম্পাইল করতে ব্যর্থ। প্রসঙ্গ {2} | build |
| NONEmptyPrefixMappedToEmptyURI | RegularExpressionProtection {0}: খালি উপসর্গ {1} খালি ইউরিতে ম্যাপ করা যাবে না | build |
| কোন প্যাটার্নস টোএনফোর্স | RegularExpressionProtection {0}: {1} এ প্রয়োগ করার জন্য কোনো প্যাটার্ন নেই | build |
| এনফোর্স করার জন্য কিছুই নয় | RegularExpressionProtection {0}: URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload এর মধ্যে অন্তত একটি বাধ্যতামূলক | build |
| XPath কম্পাইলেশন ব্যর্থ হয়েছে | RegularExpressionProtection {0}: xpath {1} কম্পাইল করতে ব্যর্থ। প্রসঙ্গ {2} | build |
ফল্ট ভেরিয়েবল
যখন এই নীতি একটি ত্রুটি ট্রিগার করে তখন এই ভেরিয়েবলগুলি সেট করা হয়৷ আরও তথ্যের জন্য, নীতি ত্রুটি সম্পর্কে আপনার যা জানা দরকার তা দেখুন।
| ভেরিয়েবল | কোথায় | উদাহরণ |
|---|---|---|
fault.name=" fault_name " | fault_name হল ফল্টের নাম, উপরের টেবিলে তালিকাভুক্ত। | fault.name Matches "ThreatDetected" |
regularexpressionprotection. policy_name .failed | policy_name হল সেই নীতির ব্যবহারকারী-নির্দিষ্ট নাম যা ত্রুটিটি ফেলেছে। | regularexpressionprotection.Regular-Expressions-Protection-1.failed = true |