يتم الآن عرض مستندات 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 |
الاسم الداخلي للسياسة وقد تحتوي قيمة السمة ويمكنك اختياريًا استخدام العنصر |
لا ينطبق | مطلوبة |
continueOnError |
اضبط القيمة على اضبط القيمة على |
false | إجراء اختياري |
enabled |
اضبط القيمة على اضبط القيمة على |
صحيح | إجراء اختياري |
async |
تم إيقاف هذه السمة نهائيًا. |
false | منهي العمل به |
العنصر <DisplayName>
استخدِم هذه السمة بالإضافة إلى السمة name
لتصنيف السياسة في محرِّر الخادم الوكيل لواجهة المستخدم الإدارية باستخدام اسم مختلف بلغة طبيعية.
<DisplayName>Policy Display Name</DisplayName>
تلقائي |
لا ينطبق إذا لم تستخدم هذا العنصر، سيتم استخدام قيمة السمة |
---|---|
التواجد في المنزل | إجراء اختياري |
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 غير صالح. | build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
يحدث هذا الخطأ إذا كان متغيّر message
المحدَّد في العنصر <Source> أيًا مما يلي:
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
يحدث هذا الخطأ عند ضبط العنصر <Source> على متغيّر ليس من نوع message.
|
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، تكون واجهات برمجة التطبيقات التي تتيح ترميز كائنات JavaScript (JSON) عرضة للهجمات على مستوى المحتوى. تحاول هجمات JSON البسيطة استخدام بُنى تغرق برامج تحليل JSON اللغوية على الخدمة وإحداث هجمات على مستوى التطبيق لرفض الخدمة. جميع الإعدادات اختيارية ويجب ضبطها لتحسين متطلبات الخدمة ضد الثغرات المحتملة.