RegularExpressionProtection নীতি

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

কী

মেসেজ থেকে তথ্য এক্সট্র্যাক্ট করে (যেমন, URI পাথ, কোয়েরি প্যারামিটার, হেডার, ফর্ম প্যারামিটার, ভেরিয়েবল, XML পেলোড বা JSON পেলোড) এবং আগে থেকে সংজ্ঞায়িত রেগুলার এক্সপ্রেশনের সাথে সেই কন্টেন্ট মূল্যায়ন করে। উল্লেখ করা কোনও রেগুলার এক্সপ্রেশন সত্য হলে, মেসেজটিকে হুমকি হিসেবে বিবেচনা করা হয় এবং সেটি বাতিল করা হয়।

ভিডিও

রেগুলার এক্সপ্রেশন সুরক্ষা নীতি সম্পর্কে আরও জানতে নিম্নলিখিত ভিডিও দেখুন।

ভিডিও বিবরণ
SQL ইঞ্জেকশন অ্যাটাকের বিরুদ্ধে সুরক্ষা (নতুন Edge) নতুন Edge অভিজ্ঞতা UI-তে রেগুলার এক্সপ্রেশন সুরক্ষা নীতি ব্যবহার করে SQL ইঞ্জেকশন অ্যাটাক থেকে সুরক্ষিত থাকুন।
SQL ইঞ্জেকশন অ্যাটাকের বিরুদ্ধে সুরক্ষা (ক্লাসিক Edge) ক্লাসিক Edge UI-তে রেগুলার এক্সপ্রেশন সুরক্ষা নীতি ব্যবহার করে SQL ইঞ্জেকশন অ্যাটাক থেকে সুরক্ষিত থাকুন।

নমুনা

GitHub

GitHub-এ regex-সুরক্ষা স্যাম্পেল দেখায় যে কীভাবে কোয়েরি প্যারামিটারের মাধ্যমে সম্ভাব্য SQL ইঞ্জেকশন অ্যাটাক আটকানো যায়। এছাড়াও, হ্যাকারদের উত্তর থেকে কোনও দরকারী তথ্য পাওয়া থেকে আটকাতে, নমুনাটি একটি জেনেরিক 400 এরর স্ট্যাটাস সেট করার একটি ভাল অনুশীলন দেখায়।

জাভাস্ক্রিপ্ট ইনক্লুড অ্যাটাক প্রোটেকশন

<RegularExpressionProtection name="JsonPathRegExProtection">
    <DisplayName>Regular Expression Protection 1</DisplayName>
    <Source>request</Source>
    <JSONPayload escapeSlashCharacter="true">
       <JSONPath>
          <Expression>$</Expression>
          <Pattern>&lt;\s*script\b[^&gt;]*&gt;[^&lt;]+&lt;\s*\/\s*script\s*&gt;
          </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-এনকোড করে &lt;\s*script\b[^&gt;]*&gt;[^&lt;]+&lt;\s*\/\s*script\s*&gt; হিসেবে দেখানো হয়েছে।

এছাড়াও, আপনার রেগুলার এক্সপ্রেশনে ফরওয়ার্ড স্ল্যাশ (/) থাকলে, আপনাকে অবশ্যই <JSONPayload> escapeSlashCharacter অ্যাট্রিবিউটকে true হিসেবে সেট করে সেগুলিকে এস্কেপ করতে হবে।

ছোট ও বড় হাতের অক্ষরের মধ্যে পার্থক্য না করে ম্যাচ করা

কেস-ইনসেনসিটিভ ম্যাচিং করা একটি সাধারণ ব্যবহারিক প্রয়োগ। (?i) কনস্ট্রাক্ট ব্যবহার করে রেগুলার এক্সপ্রেশনে আপনি কীভাবে এটি করতে পারেন তার একটি উদাহরণ এখানে দেওয়া হল। এই উদাহরণে, যেমন, DELETE, delete এবং Delete-এর মূল্যায়ন করলে উত্তর 'সঠিক' হবে।

<Pattern>[\s]*(?i)((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b))</Pattern>

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

Apigee Edge আপনাকে রেগুলার এক্সপ্রেশন কনফিগার করতে দেয় যা রানটাইমে API ট্রাফিকের বিরুদ্ধে মূল্যায়ন করে সাধারণ কন্টেন্ট-লেভেল হুমকি শনাক্ত করতে পারে যা নির্দিষ্ট প্যাটার্ন অনুসরণ করে।

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

RegularExpressionProtection-এর সবচেয়ে সাধারণ ব্যবহার হল JSON এবং XML পে-লোড মূল্যায়ন করে ক্ষতিকর কন্টেন্ট শনাক্ত করা।

কোনও রেগুলার এক্সপ্রেশন কন্টেন্ট-ভিত্তিক সব অ্যাটাককে নির্মূল করতে পারে না এবং ডিপ্থ-ইন-ডিফেন্স চালু করতে একাধিক মেকানিজমকে একসাথে ব্যবহার করতে হবে। এই বিভাগে কন্টেন্ট বাদ দেওয়ার জন্য কিছু সাজেস্ট করা প্যাটার্ন বর্ণনা করা হয়েছে।

এক্সক্লুশন প্যাটার্নের উদাহরণ

নীতির XML কনফিগারেশন ফাইলে রেগুলার এক্সপ্রেশনকে অবশ্যই XML-এনকোড করতে হবে।

নাম রেগুলার এক্সপ্রেশন
SQL ইঞ্জেকশন
[\s]*((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b))
সার্ভার-সাইড ইনক্লুড ইনজেকশন
<!--#(include|exec|echo|config|printenv)\s+.*

XML এনকোড করা:

&lt;!--#(include|exec|echo|config|printenv)\s+.*
XPath সংক্ষিপ্ত সিনট্যাক্স ইনজেকশন
(/(@?[\w_?\w:\*]+(\[[^]]+\])*)?)+
XPath Expanded Syntax Injection
/?(ancestor(-or-self)?|descendant(-or-self)?|following(-sibling))
JavaScript Injection
<\s*script\b[^>]*>[^<]+<\s*/\s*script\s*>

XML এনকোড করা:

&lt;\s*script\b[^&gt;]*&gt;[^&lt;]+&lt;\s*/\s*script\s*&gt;
Java Exception Injection
.*?Exception in thread.*

XML বা JSON পেলোড সহ কোনও অনুরোধে Content-Type হেডার সেট করুন

রেগুলার এক্সপ্রেশন সুরক্ষা নীতির পেলোডে নিম্নলিখিত এলিমেন্ট থাকতে পারে:

  • <XMLPayload> এলিমেন্ট: নির্দিষ্ট করে যে XML পেলোড থেকে তথ্য এক্সট্র্যাক্ট করতে হবে এবং প্রদত্ত রেগুলার এক্সপ্রেশন অনুযায়ী মূল্যায়ন করতে হবে।

    আপনি যদি নীতিতে <XMLPayload> ব্যবহার করেন, তাহলে অনুরোধের Content-Type হেডারকে অবশ্যই XML কন্টেন্ট-টাইপ হতে হবে, যেমন application/xml বা text/xml।

  • <JSONPayload> এলিমেন্ট: নির্দিষ্ট করে যে JSON পেলোড থেকে তথ্য এক্সট্র্যাক্ট করতে হবে এবং প্রদত্ত রেগুলার এক্সপ্রেশন অনুযায়ী মূল্যায়ন করতে হবে।

    আপনি নীতিতে <JSONPayload> ব্যবহার করলে, অনুরোধের Content-Type হেডারকে অবশ্যই JSON কন্টেন্ট-টাইপ হতে হবে, যেমন application/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">

The following table describes attributes that are common to all policy parent elements:

Attribute Description Default Presence
name

The internal name of the policy. The value of the name attribute can contain letters, numbers, spaces, hyphens, underscores, and periods. This value cannot exceed 255 characters.

Optionally, use the <DisplayName> element to label the policy in the management UI proxy editor with a different, natural-language name.

N/A Required
continueOnError

Set to false to return an error when a policy fails. This is expected behavior for most policies.

Set to true to have flow execution continue even after a policy fails.

false Optional
enabled

Set to true to enforce the policy.

Set to false to turn off the policy. The policy will not be enforced even if it remains attached to a flow.

true Optional
async

This attribute is deprecated.

false Deprecated

<DisplayName> element

Use in addition to the name attribute to label the policy in the management UI proxy editor with a different, natural-language name.

<DisplayName>Policy Display Name</DisplayName>
Default

N/A

If you omit this element, the value of the policy's name attribute is used.

Presence Optional
Type String

<Source> এলিমেন্ট

যে মেসেজ থেকে তথ্য এক্সট্র্যাক্ট করতে হবে তা নির্দেশ করে।

<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>
ডিফল্ট: প্রযোজ্য নয়
উপস্থিতি: ঐচ্ছিক
টাইপ: প্রযোজ্য নয়

অ্যাট্রিবিউট

অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি
নাম অনুরোধ কোয়েরি প্যারামিটারের নাম, যেখান থেকে প্রদান করা রেগুলার এক্সপ্রেশন অনুযায়ী মূল্যায়ন করার জন্য তথ্য এক্সট্র্যাক্ট করতে হবে। প্রযোজ্য নয় প্রয়োজনীয়

<Header> এলিমেন্ট

অনুরোধ ও উত্তরের হেডার থেকে তথ্য এক্সট্র্যাক্ট করতে হবে এবং প্রদত্ত রেগুলার এক্সপ্রেশন অনুযায়ী মূল্যায়ন করতে হবে। আপনাকে অন্তত একটি <Pattern> এলিমেন্ট প্রদান করতে হবে যা ম্যাচ করার জন্য রেগুলার এক্সপ্রেশন প্যাটার্ন নির্দিষ্ট করে।

<Header name="a-header">
  <Pattern>REGEX PATTERN</Pattern>
  <Pattern>REGEX PATTERN</Pattern>
</Header>
ডিফল্ট: প্রযোজ্য নয়
উপস্থিতি: ঐচ্ছিক
টাইপ: প্রযোজ্য নয়

অ্যাট্রিবিউট

অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি
নাম

প্রদত্ত রেগুলার এক্সপ্রেশন অনুযায়ী মূল্যায়ন করার জন্য অনুরোধ ও উত্তরের হেডার থেকে তথ্য এক্সট্র্যাক্ট করতে হবে।

প্রযোজ্য নয় প্রয়োজনীয়

<FormParam> এলিমেন্ট

অনুরোধের ফর্ম প্যারামিটার থেকে তথ্য এক্সট্র্যাক্ট করতে হবে এবং প্রদান করা রেগুলার এক্সপ্রেশন অনুযায়ী মূল্যায়ন করতে হবে। আপনাকে অন্তত একটি <Pattern> এলিমেন্ট প্রদান করতে হবে যা ম্যাচ করার জন্য রেগুলার এক্সপ্রেশন প্যাটার্ন নির্দিষ্ট করে।

<FormParam name="a-form-param">
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</FormParam>
ডিফল্ট: প্রযোজ্য নয়
উপস্থিতি: ঐচ্ছিক
টাইপ: প্রযোজ্য নয়

অ্যাট্রিবিউট

অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি
নাম

প্রদত্ত রেগুলার এক্সপ্রেশন অনুযায়ী মূল্যায়নের জন্য অনুরোধ ফর্মের যে প্যারামিটার থেকে তথ্য এক্সট্র্যাক্ট করতে হবে তার নাম।

প্রযোজ্য নয় প্রয়োজনীয়

<Variable> এলিমেন্ট

নির্দিষ্ট করে যে প্রদত্ত ভেরিয়েবেল থেকে তথ্য এক্সট্র্যাক্ট করতে হবে এবং প্রদান করা রেগুলার এক্সপ্রেশন অনুযায়ী মূল্যায়ন করতে হবে।

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

ভেরিয়েবলের জন্য নির্দিষ্ট করা 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> element

ডেটার ধরন নির্দিষ্ট করে।
<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
ডিফল্ট: স্ট্রিং
উপস্থিতি: ঐচ্ছিক
টাইপ: স্ট্রিং
সঠিক মান:

স্ট্রিং। সঠিক ভ্যালুর মধ্যে string, boolean, int, long, float, double এবং nodeset পড়ে।

<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>
ডিফল্ট: প্রযোজ্য নয়
উপস্থিতি: ঐচ্ছিক
টাইপ: প্রযোজ্য নয়

অ্যাট্রিবিউট

অ্যাট্রিবিউট বিবরণ ডিফল্ট উপস্থিতি
escapeSlashCharacter

<JSONPath>/<Pattern>-এ রেগুলার এক্সপ্রেশনে কোনও ফরওয়ার্ড স্ল্যাশ (/) ক্যারেক্টার এড়িয়ে যেতে true হিসেবে সেট করুন।

সত্য ঐচ্ছিক

<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>
ডিফল্ট: প্রযোজ্য নয়
উপস্থিতি: প্রয়োজনীয়
টাইপ: স্ট্রিং

সমস্যার রেফারেন্স

This section describes the error codes and messages returned and fault variables set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. If you want to capture an error and raise your own custom error, set the continueOnError="true" attribute on the policy root element. To learn more, see What you need to know about policy errors and Handling faults.

Errors returned from Edge policies follow a consistent format as described in the Error code reference.

Runtime errors

These errors can occur when the policy executes.

Error Code Message
ExecutionFailed Failed to execute the RegularExpressionProtection StepDefinition {0}. Reason: {1}
InstantiationFailed Failed to instantiate the RegularExpressionProtection StepDefinition {0}
NonMessageVariable Variable {0} does not resolve to a Message
SourceMessageNotAvailable {0} message is not available for RegularExpressionProtection StepDefinition {1}
ThreatDetected Regular Expression Threat Detected in {0}: regex: {1} input: {2}
VariableResolutionFailed Failed to resolve variable {0}

Deployment errors

Error Code Message Fix
CannotBeConvertedToNodeset RegularExpressionProtection {0}: Result of xpath {1} cannot be converted to nodeset. Context {2}
DuplicatePrefix RegularExpressionProtection {0}: Duplicate prefix {1}
EmptyJSONPathExpression RegularExpressionProtection {0}: Empty JSONPath expression
EmptyXPathExpression RegularExpressionProtection {0}: Empty XPath expression
InvalidRegularExpression RegularExpressionProtection {0}: Invalid Regular Expression {1}, Context {2}
JSONPathCompilationFailed RegularExpressionProtection {0}: Failed to compile jsonpath {1}. Context {2}
NONEmptyPrefixMappedToEmptyURI RegularExpressionProtection {0}: Non-empty prefix {1} cannot be mapped to empty uri
NoPatternsToEnforce RegularExpressionProtection {0}: No patterns to enforce in {1}
NothingToEnforce RegularExpressionProtection {0}: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory
XPathCompilationFailed RegularExpressionProtection {0}: Failed to compile xpath {1}. Context {2}

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the table above. fault.name Matches "ThreatDetected"
regularexpressionprotection.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. regularexpressionprotection.Regular-Expressions-Protection-1.failed = true

স্কিমা

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

JSON থ্রেট সুরক্ষা সংক্রান্ত নীতি

XML থ্রেট সুরক্ষা সংক্রান্ত নীতি