أمان الويب / المتقدم: الضمان وسلسلة البناء والتعافي / الدرس 16
التحقق الأمني ودليل منع التراجع
اربط المتطلبات المرقمة باختبارات ومراجعات آمنة تتحقق من الحد الحقيقي لا تقرير أخضر فقط.
في هذه الصفحة
أهداف الدرس
- اختر دليل الوحدة والتكامل والمتصفح والمراجعة بحسب الادعاء.
- تحقق من الرفض وثبات الحالة والسلوك الشرعي.
يثبت الاختبار ما يرصده حده فقط
يمارس اختبار القاعدة منطقها ولا يثبت استدعاء كل مسار لها. قد يفحص التكامل وسيطاً وتفوته ملفات المتصفح، وقد تثبت رحلة المتصفح مهمة لا ذرية قاعدة. اختر أصغر حد يكشف الفشل وأكمل الدليل عند عبور الطبقات. اربط متطلبات ASVS 5.0.0 بانطباق وإصدار صريحين، لا عدد اختبارات كدرجة. تنفذ الدورة بيانات محلية سليمة فقط، ولا تشغل فاحصاً أو هجوماً أو أتمتة متصفح أو تطبيقاً مهيأً؛ تبقى تلك النتائج خارج الدليل المدعى.
تحقق من ثبات الحالة عند الرفض
تمثل الحزمة الكاملة تحريراً خيالياً للمالك. تفحص تغييراً مشروعاً ورفض الغريب مع بقاء السجل، ورفض الفاعل الغائب. هذه تحققات سلوك لا أعداد استدعاءات داخلية. الدالة صغيرة عمداً بلا مسار أو جلسة أو مخزن أو معاملة. استورد سياسة التطبيق أو خدمته الفعلية في الإنتاج، لا نسخة من القاعدة داخل الاختبار. يخص الادعاء المدخلات المحلية ونتائجها، بينما يحتاج وصل الخادم والتزامن دليلاً مستقلاً من تحقق معزول مفوض.
import unittest
def edit_title(subject, record, title):
if not subject or subject != record["owner"]:
return False
record["title"] = title
return True
class AccessTests(unittest.TestCase):
def test_owner_can_edit(self):
record = {"owner": "lab-a", "title": "Before"}
self.assertTrue(edit_title("lab-a", record, "After"))
self.assertEqual(record["title"], "After")
def test_denial_preserves_state(self):
record = {"owner": "lab-a", "title": "Before"}
self.assertFalse(edit_title("lab-b", record, "After"))
self.assertEqual(record, {"owner": "lab-a", "title": "Before"})
def test_missing_subject_is_denied(self):
record = {"owner": "lab-a", "title": "Before"}
self.assertFalse(edit_title(None, record, "After"))
if __name__ == "__main__":
unittest.main()
يعمل بـ unittest القياسية في Python وقواميس اصطناعية فقط، ويتوقع نجاح ثلاثة اختبارات. لا يمارس API أو قاعدة أو نظام مستأجرين أو جلسة أو هوية فعلية.
اضبط البيانات وتجنب الأهداف التشغيلية
استخدم هويات وسجلات وملفات وبدائل اعتماد مملوكة اصطناعية بتنظيف صريح. لا تختبر خدمة آخر أو اعتماداً حقيقياً لتكرار الصف. اضبط الوقت والنتائج لإعادة الانتهاء والسباق، وافصل المتوقع وخطأ الأداة والدليل الغائب. لا تمحو إعادة ناجحة الفشل الأول؛ احفظ المرشح والتشخيص الملائم. تخفي الإدارة الواسعة نقص الإذن، وتخلق الخاصة الواقعية الزائدة انكشافاً. اختر سلوكاً ممثلاً بأقل حساس، مع تعريف واضح لما يستبدله كل بديل وما لا يتحقق منه.
اربط التحقق بالمطلب والمرشح
يحفظ الدليل إصدار المطلب والمرشح والطريقة والبيئة والنتيجة والحدود. يستخدم المثال اسماً محلياً وحالة مخططة، لا رقم ASVS مختلقاً. يتحقق المقيم الحقيقي من الأصالة والاكتمال، لا يقبل حقل passed فقط. أظهر الفحوص المطلوبة الغائبة. تدعم الاختبارات ادعاءات مكملة، وتشرح المراجعة سياقاً لا تمثله البيانات. اجعل مالك الاستثناء والقرار مسؤولاً عن المتبقي، بدلاً من جعل الناقص نجاحاً صامتاً. يبقى الربط بين الادعاء ودليله هو موضوع المراجعة.
{
"localRequirement": "LOCAL-DENIED-EDIT-NO-MUTATION",
"standardMapping": "reviewed-ASVS-5.0.0-selection",
"candidate": "synthetic-build-label",
"method": "unit-and-authorized-integration",
"requiredChecks": ["legitimate-edit", "denied-edit", "unchanged-downstream-state"],
"evidenceState": "planned",
"ownerRole": "verification-maintainer"
}
المخطط خاص بالتطبيق وبلا موافقة أو بصمة حزمة حقيقية. ليست planned دليلاً ناجحاً، ولا ينفذ السجل اختباراً أو يفوض نشراً.
راجع التغطية والتغيير بصدق
تصان الفحوص عند تغير الاعتماد أو المسار أو الهوية أو سياسة الرد أو التدفق. يدعم النظيف نطاق الأداة وحالاتها، لا غياب كل ثغرة. راجع المستبعد والإيجابي والسلبي الخاطئين والمسار غير المختبر مع المالك. أضف ارتداداً مركزاً للحل وتحقق من الحماية والمهمة العادية. يتطلب التقييم والاختبار التشغيلي تفويضاً منفصلاً. الناتج دليل متتبع لمطالب محددة وفجوات معروفة، لا شهادة غير مسندة أو حزمة تنجح لأنها لا تمارس الرفض مطلقاً.
الأخطاء الشائعة وإصلاحها
يسمى اختبار القاعدة إنفاذ المسار كاملاً
- لماذا يحدث؟
- اتسع الادعاء عن المنفذ.
- كيف تصلحه؟
- أضف دليل تكامل مفوضاً.
- كيف تتجنب تكراره؟
- حدد حد كل اختبار وقيوده.
تفحص حالة الرفض وتهمل الآثار
- لماذا يحدث؟
- لا يرصد التحقق الحالة.
- كيف تصلحه؟
- افحص السجل والشروط اللاحقة.
- كيف تتجنب تكراره؟
- ضمّن الثبات بالسلبية.
يخفي التقرير الأخضر فحوصاً غائبة
- لماذا يحدث؟
- دخل الواصل فقط بالمقام.
- كيف تصلحه؟
- قارن المتوقع والمكتمل.
- كيف تتجنب تكراره؟
- نمذج الغياب وفشل الأداة.
اختبر فهمك
1. لماذا تضيف السماح لاختبار التفويض؟
اعرض الحل المشروح
قد تمنع المنظومة الجميع فتنجح اختبارات الرفض وحدها وتكسر المنتج. تحقق من المهمة الشرعية ومن الغريب والفاعل الغائب، ثم قيّم المسار والبيانات الفعليين مستقلاً. يكمل السماح والرفض بعضهما ولا يثبت أحدهما صحة القرار كله.
2. يبلغ الفاحص صفراً. ماذا تحفظ المراجعة؟
اعرض الحل المشروح
احفظ الأداة وإصدارها ونطاقها وضبطها والمرشح وتاريخ الدليل والاستثناء والمتطلبات غير المختبرة. لا يضمن صفر النتائج المعروفة أماناً عاماً. لا تشغل الدورة هذا الفاحص؛ بل تعلم تفسير نتيجة محدودة دون توسيع ادعائها خارج ما رصدته.
أهم ما تعلمته
- يطابق التحقق الادعاء والمرشح.
- الرفض والثبات تحققان مختلفان.
- تدعم الاختبارات دليلاً محدوداً لا يقيناً.