افصل تخزين التطبيق عن تخزين HTTP
لا تملك Redis وWorkers KV وذاكرة HTTP الضمانات نفسها تلقائياً. يستخدم Workers KV اتساقاً نهائياً: الكتابة ليست مرئية فوراً في كل مكان. التوجيهات التالية تخص HTTP ولا تضبط وحدها ذاكرة التطبيق.
| توجيه استجابة HTTP | المعنى الأساسي | الحد |
|---|---|---|
| no-cache | يسمح بالتخزين مع التحقق قبل إعادة الاستخدام. | لا يعني منع التخزين. |
| no-store | لا تخزن هذه الاستجابة في الذاكرة المؤقتة. | لا يحذف النسخ السابقة تلقائياً. |
| private | لا تخزن في ذاكرة مشتركة. | ليس قاعدة مصادقة. |
| max-age | مدة حداثة الاستجابة. | لا يضمن اتساق كل البيانات. |
اختبر الاستجابة الصحيحة للشخص الصحيح
- حدد اختلافات المفتاح حسب المورد والمعلمات واللغة ونطاق الصلاحيات. اختبر ألا يحصل حساب على استجابة خاصة بحساب آخر.
- حدد العمر الأقصى والإبطال والسلوك بعد التعديل أو الحذف. TTL قصير لا يضمن قراءة متسقة فوراً.
- اختبر انتهاءً متزامناً وتعطل الذاكرة والمصدر. اجمع عمليات التحديث عند الحاجة، ولا تقدم استجابة قديمة إلا إذا سمحت قواعد العمل.
قس أكثر من نسبة إصابات الذاكرة
راقب التأخير والأخطاء وحمل المصدر والاستجابات غير الصحيحة أو القديمة. قد تتطلب الأرصدة والمخزون المحجوز والصلاحيات ضمانات تختلف عن كتالوج عام. يجب ألا تصبح الذاكرة السريعة مصدراً بديلاً للحقيقة دون ضبط.
المراجع الأساسية
يجب أن يحافظ التخزين المؤقت لواجهة برمجة التطبيقات على قرارات الوصول.
يمكن أن يؤدي التخزين المؤقت للاستجابات إلى تسريع الاستعلامات غير الصحيحة عندما تتجاهل المفاتيح أذونات المُرسِل. يزداد الخطر عند دمج كائنات عامة وخاصة في الرسم البياني.
- صنّف الحقول العامة والخاصة والحقول التي تعتمد على الأدوار قبل التخزين المؤقت.
- اختبر الاستجابة من حساب واحد واطلبها من حساب آخر.
- أبطل النتائج بعد تغييرات الأذونات أو البيانات.
المصدر الأساسي: OWASP — GraphQL Cheat Sheet. المنهج المرتبط: اقرأ الدليل العملي.
قياس حداثة الذاكرة المخبأة أيضاً
مثال افتراضي: البيانات لا تصف عميلاً أو نتيجة مرصودة.
تتم قراءتان بسرعة، لكن إحداهما ما زالت تعرض إتاحة قديمة بعد تغير المصدر.
- قارن القيمة والإصدار وموضع القراءة والزمن منذ التغيير. اختبر الإبطال وانتهاء الصلاحية والوصول إلى المصدر وفق عقد النظام.
- حدد التقادم المقبول لكل استخدام وراقب الاختلافات. انخفاض زمن الاستجابة لا يثبت اتساق البيانات المقدمة.
المصدر الأساسي: IETF — RFC 9111, HTTP Caching. المنهج المرتبط: اقرأ الدليل العملي.
النطاقات الفرعية المهجورة: إزالة CNAME مع حفظ التحكم
ربط أسماء DNS بموارد تحت السيطرة وإغلاق التبعيات قبل تحرير الخدمة.
- سجّل الاسم وسلسلة CNAME ومورد المزود والمسؤول. قارن DNS بجرد الحساب المصرّح به. خطأ HTTP أو NXDOMAIN أو غياب المورد يستدعي الفحص ولا يثبت إمكان الاستيلاء؛ تختلف حماية المزودين.
- احذف الإشارة أو وجّهها إلى مورد تحت سيطرتك قبل تحرير المورد القديم. راع قيم TTL السابقة والتخزين المؤقت وافحص DNS المرجعي وعدة محللات. احتفظ بإثباتات الملكية اللازمة ولا تحذف كل سجلات TXT.
- راجع الروابط والتحويلات وعناوين رجوع OAuth وwebhooks ونطاقات ملفات الارتباط. إن كان المورد قد تحرر، صحح DNS وافحص التعرض المحتمل وفق إجراء الحوادث. طابق DNS والموارد بعد كل حذف.
حالة قبول قابلة للتكرار
مثال افتراضي: البيانات لا تصف عميلاً أو نتيجة مرصودة.
عرض بيانات الحالة
{
"name": "portal.example",
"cname_present": true,
"resource_deleted": true,
"provider_claimability": "not_verified",
"takeover_observed": false,
"expected": "remove_or_replace_mapping_and_review_exposure"
}القرار المتوقع
مثال افتراضي: portal.example يشير إلى مورد محذوف. أزل CNAME أو اختر وجهة تحت السيطرة؛ الغياب وحده لا يثبت استيلاء طرف ثالث.
هل صفحة الخطأ تثبت إمكان الاستيلاء على النطاق؟
لا. تأكد من حالة المورد وحجز الاسم أو التحقق من الملكية لدى المزود. لا تطالب بمورد لإثبات الخطر.
المصدر الأساسي: Microsoft — Prevent dangling DNS entries. المنهج المرتبط: اقرأ الدليل العملي.
ETag وتخزين HTTP المؤقت والتعديلات المتزامنة
الملاحظات المرجعية المفصّلة متاحة باللغة الإنجليزية في هذه النسخة.
Revalidation does not replace cache isolation
A matching If-None-Match can justify 304 for the selected representation after access checks. It does not by itself select the correct user variant.
- Separate variant selection, authorisation and validator comparison.
- Test weak and strong tags with If-None-Match: the comparison is weak.
- Read no-cache as validation before reuse, rather than no-store.
Explore ETag comparisons and the simulator →
References reviewed · RFC 9110 · §13 · RFC 9111 · RFC 6585 · §3
GraphQL: الأخطاء والقوائم والبيانات الجزئية
الملاحظات المرجعية المفصّلة متاحة باللغة الإنجليزية في هذه النسخة.
GraphQL result: follow the error path
Aliases belong to the result; list indices start at zero. These details determine where a client should flag missing data.
- Compare absent data, partial data and data: null.
- Keep the original path even when a parent becomes null.
- Test permissions, quotas and interface states separately.
Explore GraphQL responses and nullability →
GraphQL Specification · September 2025 · Published edition · September 2025
