در این صفحه، گزینهها و قراردادهای لینک امن را بررسی میکنیم.
برای فعالسازی، فعالسازی لینک امن (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 |
|---|---|
| قفل شدن به مسیر، بدون محدودیت IP | path + secret + expire |
| قفل شدن به مسیر، با محدودیت IP | path + secret + expire + clientIP |
| آزاد برای همه مسیرها، بدون محدودیت IP | secret + expire |
| آزاد برای همه مسیرها، با محدودیت IP | secret + 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 |
| طول Secret | 16 تا 32 کاراکتر |
| نام پارامتر توکن و انقضا | فقط حروف لاتین، عدد، _ و - |
| الگوریتم امضا | MD5 روی رشته متصلشده |
| واحد انقضا | ثانیه (Unix Timestamp) |
