در این صفحه، گزینه‌ها و قراردادهای لینک امن را بررسی می‌کنیم.

برای فعال‌سازی، فعال‌سازی لینک امن (Secure Link) برای مسیر را دنبال می‌کنیم.

تنظیمات

گزینهمقدارپیش‌فرضتوضیح
نام پارامتر توکنحروف لاتین، عدد، _ یا -tokenنام پارامتر Query که توکن در آن قرار می‌گیرد.
نام پارامتر انقضاحروف لاتین، عدد، _ یا -expireنام پارامتر Query که زمان انقضا در آن قرار می‌گیرد.
محدوده اعتبار توکنقفل شدن به مسیر / آزاد برای همه مسیرهاقفل شدن به مسیرمشخص می‌کند مسیر URL در تولید توکن در نظر گرفته شود یا خیر.
محدود به IP درخواست‌دهندهفعال / غیرفعالغیرفعالمشخص می‌کند IP درخواست‌دهنده نیز در تولید توکن در نظر گرفته شود یا خیر.
Secretهاحداکثر ۵ رشته، هر کدام ۱۶ تا ۳۲ کاراکترخالیSecretهای مورد استفاده برای تولید و اعتبارسنجی توکن.

اگر نام پارامتر توکن یا نام پارامتر انقضا خالی باشد، از token و expire استفاده می‌شود.

Secret

حداکثر ۵ Secret را می‌توانیم همزمان فعال نگه داریم. طول هر Secret باید بین ۱۶ تا ۳۲ کاراکتر باشد.

Secret را می‌توانیم به‌صورت خودکار تولید کنیم یا مقدار آن را به‌صورت دستی وارد کنیم.

لبه توکن را با همه Secretهای فعال بررسی می‌کند. بنابراین می‌توانیم Secret جدید را اضافه کنیم، اپلیکیشن را به‌روزرسانی کنیم و سپس Secret قبلی را حذف کنیم.

محل نگهداری Secret

هر کسی که به Secret دسترسی داشته باشد، می‌تواند برای محتوای محافظت‌شده توکن معتبر تولید کند. Secret را در مرورگر، اپلیکیشن عمومی یا مخزن عمومی قرار نمی‌دهیم.

فعال‌سازی روی قانون مسیر

گزینهمقدارتوضیح
فعال کردن لینک امن برای این مسیرفعال / غیرفعالبررسی توکن و زمان انقضا را برای درخواست‌های منطبق با قانون مسیر فعال یا غیرفعال می‌کند.

تا زمانی که این گزینه روی قانون مسیر فعال نباشد، تعریف Secret و سایر تنظیمات لینک امن به‌تنهایی درخواست‌های آن مسیر را محدود نمی‌کند.

مسیر فراگیر

فعال کردن لینک امن روی /* همه درخواست‌های آن مسیر را به توکن معتبر وابسته می‌کند. معمولا لینک امن را فقط روی مسیرهای محافظت‌شده مانند /videos/* یا /downloads/* فعال می‌کنیم.

محدوده اعتبار توکن

گزینهرفتار
قفل شدن به مسیر (ایمن‌تر)مسیر URL در تولید توکن در نظر گرفته می‌شود و توکن فقط برای همان مسیر معتبر است.
آزاد برای همه مسیرهامسیر URL در تولید توکن در نظر گرفته نمی‌شود و توکن می‌تواند برای مسیرهای مختلف همان دامنه استفاده شود.

محدودیت IP

گزینهرفتار
فعالIP درخواست‌دهنده نیز در تولید توکن در نظر گرفته می‌شود.
غیرفعالIP درخواست‌دهنده در تولید توکن در نظر گرفته نمی‌شود.

IP متغیر

اگر محدودیت IP فعال باشد، تغییر IP درخواست‌دهنده بین زمان تولید لینک و زمان استفاده از آن می‌تواند باعث 403 شود.

فرمول توکن

در حالت قفل شدن به مسیر، مسیر استفاده‌شده در تولید توکن همان مسیر URL است؛ با / شروع می‌شود و Query String را شامل نمی‌شود.

حالترشته قبل از MD5
قفل شدن به مسیر، بدون محدودیت IPpath + secret + expire
قفل شدن به مسیر، با محدودیت IPpath + secret + expire + clientIP
آزاد برای همه مسیرها، بدون محدودیت IPsecret + expire
آزاد برای همه مسیرها، با محدودیت IPsecret + expire + clientIP

توکن از MD5 رشته مربوطه ساخته می‌شود:

token = MD5(رشته بالا)

خروجی MD5 به‌صورت هگزادسیمال در پارامتر توکن قرار می‌گیرد.

برای مثال، با نام‌های پیش‌فرض:

https://cdn.example.com/videos/premium/episode-1.mp4?expire=1718851200&token=<md5-hex>

اگر نام پارامترها را تغییر داده باشیم، همان نام‌ها را در Query قرار می‌دهیم.

expire باید یک Unix Timestamp برحسب ثانیه و بزرگ‌تر از زمان فعلی لبه باشد. در غیر این صورت، درخواست حتی با توکن صحیح نیز معتبر نخواهد بود.

نمونه ساخت با Python

نمونه زیر حالت قفل شدن به مسیر و بدون محدودیت IP را نشان می‌دهد:

from hashlib import md5
from time import time
 
secret = "your_secret_from_cdn_panel"
path = "/videos/premium/episode-1.mp4"
expire = int(time()) + 180
 
token = md5(f"{path}{secret}{expire}".encode("utf-8")).hexdigest()
 
url = f"https://cdn.example.com{path}?expire={expire}&token={token}"
 
print(url)

برای حالت‌های دیگر، رشته ورودی MD5 را مطابق جدول بالا تغییر می‌دهیم.

پاسخ خطا

در صورت نامعتبر بودن لینک امن، درخواست با کد 403 رد می‌شود. از جمله مواردی که می‌توانند باعث این وضعیت شوند:

  • توکن نادرست است.
  • زمان انقضای توکن گذشته است.
  • Secret استفاده‌شده برای تولید توکن معتبر نیست.
  • مسیر استفاده‌شده برای تولید توکن با مسیر درخواست مطابقت ندارد.
  • در صورت فعال بودن محدودیت IP، IP درخواست‌دهنده با IP استفاده‌شده برای تولید توکن مطابقت ندارد.

صفحه خطای سفارشی برای کدهای خاص جدا از لینک امن است و در صورت پیکربندی، ممکن است به‌جای صفحه پیش‌فرض نمایش داده شود.

محدودیت‌ها

موردمحدودیت
تعداد Secretحداکثر 5
طول Secret16 تا 32 کاراکتر
نام پارامتر توکن و انقضافقط حروف لاتین، عدد، _ و -
الگوریتم امضاMD5 روی رشته متصل‌شده
واحد انقضاثانیه (Unix Timestamp)

ادامه مسیر