Loading...

مساعدة CDN.com.tr

روابط URL موقّعة: روابط تنتهي صلاحيتها

احمِ ملفًا بحيث لا يمكن جلبه إلا بتوقيع تولّده أنت، صالح حتى لحظة تختارها. الطلبات غير الموقَّعة تحصل على 403، والمنتهية الصلاحية تحصل على 410.

روابط URL موقّعة: روابط تنتهي صلاحيتها

احمِ ملفًا بحيث لا يمكن جلبه إلا بتوقيع تولّده أنت، صالح حتى لحظة تختارها. الطلبات غير الموقَّعة تحصل على 403، والمنتهية الصلاحية تحصل على 410.

الدليل التالي الموصى به

مسار اللوحة

  1. Management Panel
  2. Delivery Rules
  3. Expiring links
  4. Secret

المتطلبات المسبقة

  • حساب لديه اسم مضيف تسليم (delivery hostname).
  • موضع في تطبيقك لتوليد الروابط.

نموذج القرار

على مستوى الحساب أم لمسار واحد؟

الإعداد موجود على المستويين. على مستوى الحساب يعني أن كل طلب يحتاج توقيعًا، وهذا يكسر الصفحات العادية. قاعدة واحدة لـ /downloads أو /video هي ما يريده معظم الناس.

  • على مستوى الحساب: فقط للحسابات التي لا تقدّم سوى ملفات محمية
  • لكل قاعدة: الخيار المعتاد

كم يجب أن تدوم صلاحية الرابط؟

قصيرة بما يكفي ليكون الرابط المتسرّب عديم القيمة، وطويلة بما يكفي ليُنهي اتصال بطيء عملية التنزيل. دقائق لمستند، وساعات لفيديو كبير.

  • المستندات والصور: 5-15 دقيقة
  • الفيديو الكبير أو الأرشيفات: 1-6 ساعات

دليل خطوة بخطوة

1

فعّله لمسار واحد

افتح Delivery Rules، أضِف أو عدّل القاعدة التي تغطي المسار الذي تريد حمايته، فعّل خيار Expiring links وحدّد سرًّا. استخدم سلسلة عشوائية طويلة، لا كلمة.

  • Delivery Rules → القاعدة الخاصة بـ /downloads → فعّل Expiring links → الصق سرًّا عشوائيًا → Apply Changes

النتيجة المتوقعة: بعد أن يصل الإعداد إلى الحافة، يُرجع الطلب العادي لهذا المسار 403.

2

ولّد رابطًا في تطبيقك

التوقيع هو صيغة base64url لدالة MD5 لوقت الانتهاء والمسار والسر مجموعين معًا، مع مسافة واحدة قبل السر. أضِفه باسم md5 ووقت الانتهاء باسم expires.

  • PHP: $expires = time() + 600; $token = rtrim(strtr(base64_encode(md5($expires . $uri . " " . $secret, true)), "+/", "-_"), "=");
  • Then: https://cdn.example.com/downloads/file.zip?md5=TOKEN&expires=EXPIRES

النتيجة المتوقعة: يُقدَّم الرابط إلى أن تنتهي صلاحيته.

3

تحقّق من النتائج الثلاث كلها

تحقّق من حالتي الفشل كما تتحقق من حالة النجاح، لأنها ما سيراه فريق الدعم لديك في البلاغات.

  • الجلب بلا معاملات (403)
  • الجلب بصلاحية منتهية (410)
  • جلب رابط صالح (200)

النتيجة المتوقعة: ثلاث استجابات مختلفة، بحيث يمكن تصنيف بلاغ المستخدم من رمز الحالة وحده.

التحقق

  • curl -o /dev/null -w "%{http_code}" "https://cdn.example.com/downloads/file.zip" → 403
  • curl -o /dev/null -w "%{http_code}" "https://cdn.example.com/downloads/file.zip?md5=TOKEN&expires=PAST" → 410

حالات الاستخدام

تبيع فيديو أو تقريرًا أو ملفًا للتنزيل، ولا يجب أن يظل الرابط قابلاً للمشاركة إلى الأبد. حماية hotlink تمنع المواقع الأخرى من تضمين ملفاتك؛ أما URL الموقَّع فيذهب أبعد من ذلك ويجعل كل رابط شخصيًا ومحدود المدة.

سير عمل سريع

  1. Delivery Rules → اختر الحساب (أو قاعدة واحدة لمسار واحد) → فعّل إعداد Expiring links وحدّد سرًّا.
  2. يبني تطبيقك الرابط: يُجزّئ وقت الانتهاء والمسار والسر معًا، ثم يضيف التوقيع ووقت الانتهاء إلى URL.
  3. تتحقق الحافة من التوقيع قبل أي شيء آخر. الروابط الصالحة تُقدَّم وتُخزَّن مؤقتًا بشكل طبيعي؛ أما غير الصالحة فلا تصل أبدًا إلى خادمك الأصلي.
  4. بدّل السرّ عند تسرّبه أو عند مغادرة أحد أعضاء الفريق. كل رابط موقَّع بالسر القديم يتوقف عن العمل فورًا.

الفحوصات

  • الرابط بلا معاملات يُرجع 403.
  • الرابط الذي انتهت صلاحيته يُرجع 410 — رمز مختلف، حتى تميّز سجلّاتك بين الحالتين.
  • الرابط بتوقيع صحيح يُقدَّم، وتُخزَّن الاستجابة مؤقتًا مثل أي استجابة أخرى.