سياسة JSONThreatProtection

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

الموضوع

يمكنك الحدّ من خطر الهجمات على مستوى المحتوى من خلال السماح لك بتحديد الحدود في بنيات JSON المختلفة، مثل المصفوفات والسلاسل.

.

الفيديو: يمكنك مشاهدة فيديو قصير للاطّلاع على مزيد من المعلومات حول الطريقة التي تمكِّنك بها سياسة JSONThreatProtection من تأمين واجهات برمجة التطبيقات من الهجمات على مستوى المحتوى.

الفيديو: شاهِد هذا الفيديو القصير على منصة Apigee Cross-cloud 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 حرفًا.

ويمكنك اختياريًا استخدام العنصر <DisplayName> لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باستخدام اسم مختلف للغة طبيعية.

لا ينطبق مطلوبة
continueOnError

اضبط القيمة على false لعرض رسالة خطأ عند تعذُّر تنفيذ السياسة. وهو سلوك متوقّع لمعظم السياسات.

اضبط القيمة على true لمواصلة تنفيذ التدفق حتى بعد تعذُّر تنفيذ السياسة.

false إجراء اختياري
enabled

اضبط القيمة على true لفرض السياسة.

اضبط القيمة على false من أجل إيقاف السياسة. ولن يتم فرض السياسة حتى إذا ظلت مرتبطة بمسار.

صحيح إجراء اختياري
async

تم إيقاف هذه السمة نهائيًا.

false منهي العمل به

العنصر <DisplayName>

استخدِم هذه السمة بالإضافة إلى السمة name لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باستخدام اسم مختلف بلغة طبيعية.

<DisplayName>Policy Display Name</DisplayName>
تلقائي

لا ينطبق

إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة السمة name الخاصة بالسياسة.

التواجد في المنزل إجراء اختياري
Type سلسلة

عنصر <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>
الخيار التلقائي: إذا لم تحدّد هذا العنصر أو حددت عددًا صحيحًا سالبًا، لن يفرض النظام حدًا.
الحضور: إجراء اختياري
النوع: عدد صحيح

مرجع الخطأ

.

يصف هذا القسم رموز الأخطاء ورسائل الخطأ التي يتم عرضها ومتغيرات الأخطاء التي تضبطها Edge عندما تؤدي هذه السياسة إلى ظهور خطأ. هذه المعلومات مهمة لمعرفة ما إذا كنت تعمل على تطوير قواعد للأخطاء للتعامل معها. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات وأخطاء المعالجة.

أخطاء في وقت التشغيل

يمكن أن تحدث هذه الأخطاء عند تنفيذ السياسة.

رمز الخطأ رموز حالة HTTP السبب إصلاح
steps.jsonthreatprotection.ExecutionFailed 500 يمكن أن تؤدي سياسة JSONThreatProtection إلى عدّة أنواع مختلفة من أخطاء التنفيذ الناجح. تحدث معظم هذه الأخطاء عند تجاوز حدّ معيّن تم ضبطه في السياسة. تتضمّن أنواع الأخطاء التالية: طول اسم إدخال العنصر وعدد إدخالات العناصر وعدد عناصر المصفوفة وعمق الحاوية وطول قيمة سلسلة السلسلة. يحدث هذا الخطأ أيضًا عندما تحتوي الحمولة على كائن JSON غير صالح.
steps.jsonthreatprotection.SourceUnavailable 500 يحدث هذا الخطأ إذا كان متغيّر message المحدَّد في العنصر <Source> أيًا مما يلي:
  • خارج النطاق (غير متاحة في المسار المحدّد الذي يتم فيه تنفيذ السياسة)
  • القيمة ليست من القيم الصالحة request أو response أو message
steps.jsonthreatprotection.NonMessageVariable 500 يحدث هذا الخطأ عند ضبط العنصر <Source> على متغيّر ليس من نوع message.

أخطاء النشر

بلا عُري

متغيرات الخطأ

ويتم ضبط هذه المتغيّرات عندما تؤدي هذه السياسة إلى ظهور خطأ. لمزيد من المعلومات، يمكنك الاطّلاع على المعلومات التي يجب معرفتها عن الأخطاء المتعلقة بالسياسات.

المتغيرات المكان مثال
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، تكون واجهات برمجة التطبيقات التي تتيح ترميز كائنات JavaScript (JSON) عرضة للهجمات على مستوى المحتوى. تحاول هجمات JSON البسيطة استخدام بُنى تغرق برامج تحليل JSON اللغوية على الخدمة وإحداث هجمات على مستوى التطبيق لرفض الخدمة. جميع الإعدادات اختيارية ويجب ضبطها لتحسين متطلبات الخدمة ضد الثغرات المحتملة.

مواضيع ذات صلة

سياسة JSONtoXML

سياسة XMLThreatProtection

سياسة StandardExpressionProtection