محتويات الدورة

تطوير البرمجيات الآمن / متوسط: حدود التنفيذ والتحقق / الدرس 7

بناء عقود صريحة لحدود المدخلات

فصل التحليل والتوحيد والبنية وقواعد المجال والسلطة قبل قبول القيمة.

وقت القراءة التقريبي: 4 دقيقةتاريخ مراجعة المحتوى
في هذه الصفحة

أهداف الدرس

  • التحقق من الأنواع والمجالات دون تحويل عرضي.
  • شرح حاجة المدخل الصحيح إلى الصلاحية ومعالجة الإخراج الآمنة.

إسناد كل سؤال إلى حده

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

رفض التحويل الذي لا يسمح به العقد

ينبغي أن يعكس المدقق مجال القيم العام في العقد، لا تحويل لغة مريحا. في Python، يعد bool فرعا من int، لذلك تستخدم قاعدة الأعداد الصحيحة التدريبية فحص النوع الدقيق. يقبل البرنامج الأول سعات ضمن الحدود ويرفض القيم المنطقية وسلاسل الأرقام وخارج المجال. النطاق المختار خيالي وصغير عمدا، ويختار المنتج الحقيقي حدوده ووحداته. لا يحلل البرنامج بايتات HTTP، ولا يفرض حجم الطلب، ولا يعالج كل تمثيل عددي ممكن في اللغات الأخرى.

python مجال سعة خيالي صارم
def valid_capacity(value):
    return type(value) is int and 1 <= value <= 80

for value in [1, 80]:
    assert valid_capacity(value) is True
for value in [0, 81, True, "20", None]:
    assert valid_capacity(value) is False
print("seven capacity boundary cases checked")
الناتج المتوقع
seven capacity boundary cases checked

يفحص البرنامج المحلي الكامل سبعة مدخلات دون تحويل. ثمانون حد تدريب لا توصية للنظام. تحليل التطبيق والتخزين والصلاحية خارج الفحص.

التوحيد بقاعدة معنى موثقة فقط

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

python سياسة توحيد فئة محدودة
def category(value):
    if not isinstance(value, str):
        return "INVALID_CATEGORY"
    normalized = value.strip().lower()
    return normalized if normalized in {"art", "science"} else "INVALID_CATEGORY"

assert category(" ART ") == "art"
assert category("science") == "science"
assert category("unknown") == "INVALID_CATEGORY"
assert category(None) == "INVALID_CATEGORY"
print("field-specific normalization checked")
الناتج المتوقع
field-specific normalization checked

يفحص البرنامج الكامل أربع حالات محلية ويعيد علامة خطأ تدريب ثابتة. لا ينشئ طلبا أو سجلا. تحفظ سلسلة الخطأ في اللغتين بوصفها بيانات آلية تقنية.

التحقق من العلاقات بحالة موثوقة

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

حفظ حدود التفسير بعد التحقق

قد يحتوي عنوان ورشة صحيح علامات ترقيم عادية، ويظل محتاجا إلى ترميز HTML بحسب السياق أو تسلسل منظم عند الإخراج. وما زال معرف مورد صحيح يحتاج إذن الوصول قبل البحث أو التعديل. لا تسم قيمة منقحة دون تحديد الخاصية وسياق الوجهة. يجب أن ينتج التحقق قيمة واضحة النوع أو رفضا موثقا، مع إبعاد الاستثناءات الخام عن الردود العامة. اختبر الحدود والحقول الغائبة وnull والنص الفارغ والمحتوى المدعوم متعدد اللغات ببيانات مختلقة، وتجنب تجارب مدخلات ضخمة لا حاجة لها.

الأخطاء الشائعة وإصلاحها

تقبل True كسعة

لماذا يحدث؟
يوسع فحص النوع مجال العقد.
كيف تصلحه؟
نفذ النوع والمجال الموثقين.
كيف تتجنب تكراره؟
أدرج المنطق والسلسلة وnull والحدود.

يعتبر المعرف الصحيح إذنا

لماذا يحدث؟
تخلط البنية بالسلطة.
كيف تصلحه؟
افحص سياسة الفاعل والمورد والإجراء.
كيف تتجنب تكراره؟
افصل حالات التحقق والصلاحية.

يقبل التوحيد فئة مجهولة بصمت

لماذا يحدث؟
يوسع البديل المجال.
كيف تصلحه؟
ارفض القيمة الموحدة غير المدعومة.
كيف تتجنب تكراره؟
اختبر المحظور بعد التوحيد.

اختبر فهمك

1. يرسل الطلب capacity=30 وcurrentAttendance=20. هل يستطيع المعالج الوثوق بالقيمتين؟

اعرض الحل المشروح

يمكنه التحقق من السعة الواردة في الطلب، لكن يجب أن يأتي عدد الحضور الحالي من حد الحالة المراجع. وإلا استطاع المستدعي إرسال عدد يلائمه. اختبر القاعدة ببيانات موثوقة تحتوي خمسة وثلاثين تسجيلا نشطا، واشترط الرفض دون تعديل.

2. لماذا لا تصبح الفئة المقبولة آمنة تلقائيا داخل أمر مولد؟

اعرض الحل المشروح

قبول المجال وتفسير الأمر خاصيتان مختلفتان. فضل واجهة مكتبة، وأبق القيم الخارجية بيانات تمر عبر واجهة منظمة مراجعة. لا تبرر قائمة سماح للفئات لصق سلسلة أمر نظام أو تجاهل دلالة وسائطه.

أهم ما تعلمته

  • للتحقق طبقات مستقلة.
  • التوحيد خاص بالحقل ويحفظ المعنى.
  • تحتاج البيانات الصحيحة سلطة وتفسيرا آمنا.

المراجع الرسمية