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 برمی‌گرداند — کدی متفاوت، تا لاگ‌های خودتان این دو حالت را از هم تشخیص دهند.
  • لینکی با امضای درست سرو می‌شود، و پاسخ مثل هر پاسخ دیگری کش می‌شود.