حفاظت از لینک دانلود ووکامرس

آموزش نصب و تنظیم افزونه حفاظت از لینک‌های دانلود وردپرس

معرفی افزونه

بیشتر سایت‌هایی که در زمینه فروش یا دانلود فایل فعالیت می‌کنند دارای هاست مجزایی برای فایل‌های قابل دانلود خود می‌باشند که حفاظت از این فایل‌ها امری ضروری است؛ در غیر این صورت هر کسی با در دست داشتن آدرس فایل‌های شما می‌تواند آنها را هزاران بار دانلود کند و با این کار حتی می‌توانند هاست دانلود شما را از دسترس خارج نمایند. با توجه به ضرورت حفاظت از فایل‌های قابل دانلود که بر روی هاست یا هاست‌های دیگری نگهداری می‌شوند؛ ما افزونه حفاظت از لینک‌های دانلود هم‌صدا با وردپرس را به عنوان یک افزونه کاربردی ایرانی توسعه داده‌ایم که به وسیله آن می‌توانید جلوی دانلود غیرمجاز فایل‌های موجود در هاست دانلودتان را بگیرید و محدودیت‌های خاصی برای آن در نظر بگیرید. این افزونه علاوه‌بر ووکامرس از لینک‌های افزونه‌های WooCommerce, Download Monitor, Easy Digital Downloads نیز پشتیبانی می‌کند.

آموزش نصب و تنظیم افزونه

  • ابتدا افزونه را دانلود نموده و از حالت فشرده خارج نمایید.
  • فایل wc-protect-external-link.zip را که در پوشه Plugin قرار دارد در سایت وردپرسی خود بارگذاری و فعال نمایید).

مراحل: افزونه‌ها > افزودن > بارگذاری افزونه

فعال‌سازی: پس از نصب و فعال نمودن افزونه از منوی حفاظت از دانلود به قسمت فعال‌سازی بروید و نسبت به ثبت لایسنس افزونه اقدام نمایید.

لایسنس: پس از خرید این افزونه لایسنس آن را از بخش دانلودها در پنل کاربری ژاکت دریافت کنید.

در بخش تنظیمات افزونه حفاظت از لینک‌های دانلود چندین گزینه وجود دارد که شرح هر کدام به قرار زیر است:

  • وب سرور: وب سرور هاست دانلود خوب را انتخاب کنید.
  • کلید رمزنگاری و رمزنگاری IV: یک عبارت که از حروف و اعداد انگلیسی تشکیل شده باشد. این کلید امنیتی در مرحله بعدی با توجه به وب سرور هاست دانلود باید روی فایل config.php وب سرور لایت اسپید و یا فایل کانفیگ وب سرور nginx اعمال شود.
  • پوشه مادر: نام پوشه مادر در هاست دانلود که فایلهای قابل دانلود شما داخل آن آپلود خواهند شد.
  • دامنه‌های خارجی: نام دامنه هاست‌های دانلود خود را وارد نمایید مانند: sample.com
  • انقضای دانلود: مدت زمانی را که می‌خواهید یک لینک دانلود امن اعتبار داشته باشد وارد کنید.
  • با توجه به نیاز خود می‌توانید گزینه‌های حفاظت از ویدئو، حفاظت از صوت و حفاظت از محتوا را علامت‌گذاری کنید.
  • برای حفاظت از لینک‌های دانلود افزونه ووکامرس یا دانلودها نیازی به علامت‌گذاری موارد بالا ندارید.
  • حفاظت از محتوا: اگر این گزینه را علامت بزنید تمامی لینک‌های دانلود موجود در نوشته‌ها و برگه‌ها حفاظت خواهند شد.
  • پس از انجام تنظیمات روی ذخیره کلیک کنید تا تنظیمات ذخیره شود.

آموزش کانفیگ و آماده‌سازی هاست دانلود با وب سرور Nginx

  • ماژول ngx_http_secure_link_module:  اگر هاست دانلود شما اشتراکی است باید از پشتیبانی هاستینگ بخواهید تا این ماژول را روی nginx نصب نمایند. معمولاً اکثر هاستینگهای حرفه‌ای این ماژول را به صورت پیشفرض نصب می‌کنند. اگر هم سرور هاست دانلود متعلق به خودتان می‌باشد از پشتیبان فنی سرور بخواهید تا ماژول را برایتان نصب کند و یا با تیم پشتیبانی ما ارتباط برقرار کنید.
  • کانفیگ روی سرور اختصاصی: از پشتیبان فنی سرور بخواهید تا کانفیگهای لازم را برای شما انجام دهد. همچنین می‌توانید از تیم تخصصی ما در این زمینه کمک بگیرید.
  • کانفیگ روی هاست‌های اشتراکی: کانفیگ وب سرور Nginx روی هاست‌های دانلود اشتراکی باید توسط پشتیبانی هاستینگ انجام شود.

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

  • کد کانفیگ با حساسیت به IP و تاریخ انقضا:

location / {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr xswtvbbny1k";
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
}

* با اعمال کد بالا وب سرور هاست دانلود IP کاربر و تاریخ انقضای لینک دانلود را مورد بررسی قرار خواهد داد.

  • کد کانفیگ فقط حساس به تاریخ انقضا:

location / {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri xswtvbbny1k";
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
}

  • در کدهای کانفیگ بالا از کلید امنیتی xswtvbbny1k استفاده شده است که با توجه به کلید تنظیم شده در تنظیمات افزونه باید تغییر یابد.

اگر می‌خواهید در هاست دانلودتان فقط فایلهای موجود در یک پوشه خاص مثل downloads حفاظت شود و فایلهای موجود در سایر پوشه‌ها آزاد باشند کد کانفیگ زیر را روی هاست دانلود خود اعمال کنید:

  • کد کانفیگ با حساسیت به IP و تاریخ انقضا:

location /downloads/ {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri$remote_addr xswtvbbny1k";
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
}

* با اعمال کد بالا وب سرور هاست دانلود IP کاربر و تاریخ انقضای لینک دانلود را برای فایلهای موجود در پوشه downloads مورد بررسی قرار خواهد داد.

  • کد کانفیگ فقط حساس به تاریخ انقضا:

location /downloads/ {
secure_link $arg_md5,$arg_expires;
secure_link_md5 "$secure_link_expires$uri xswtvbbny1k";
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 410;
}
}

  • در کدهای کانفیگ بالا از کلید امنیتی xswtvbbny1k استفاده شده است که با توجه به کلید تنظیم شده در تنظیمات افزونه باید تغییر یابد.

چنانچه از روش حفاظت از کل فضای هاست دانلود استفاده می‌کنید و در عین حال می خواهید فایل‌های موجود در یک پوشه مثل free روی هاست دانلود برای همه کاربران به صورت آزاد در دسترس باشد از کد کانفیگ زیر استفاده کنید:

location /free/ {
        ## free folder
}

آموزش کانفیگ و آماده‌سازی هاست دانلود با وب سرور LiteSpeed

  • پشتیبانی هاست دانلود ازphp نسخه 5.6 یا بالاتر
  • پشتیبانی ازX-LiteSpeed-Location
  • فعال بودن پلاگین fileinfo بر روی php هاست دانلود که معمولاً فعال است.

در محصول دانلود شده داخل پوشه Addons یک پوشه به نام uptohost وجود دارد که باید فایلهای موجود در آن به پوشه public_html یا www روی هاست دانلودتان آپلود شود. قبل از آپلود موارد زیر را انجام دهید:

در فایل config.php چندین ثابت تعریف شده است که باید برخی از آن‌ها را با توجه به نیاز خود ویرایش نمایید. توصیه می‌کنیم برای ویرایش فایلها از ویرایشگر Notepad++ استفاده کنید.

  1. WEB_SERVER: نام وب‌سرور خود یعنی litespeed را وارد کنید.
  2. CHECK_IP: اگر مقدار این ثابت را true قرار دهید IP کاربر قبل از دانلود بررسی خواهد.
  3. کلیدهای ENCRYPTION_KEY , ENCRYPTION_IV که در تنظیمات افزونه وارد کرده‌اید؛ اینجا نیز وارد نمایید.
  4. FILES_ROOT: نام پوشه اصلی که فایل‌های حفاظت شده داخل آن آپلود خواهند شد. به صورت پیشفرض مقدار این ثابت را files در نظر گرفته‌ایم. چنانچه نام پوشه اصلی شما متفاوت باشد باید در فایل htaccess نیز نام آن را معرفی کنید. که کد آن به این صورت است:

RewriteCond %{REQUEST_URI} !/files

پس از ویرایش فایل config.php می توانید فایل htaccess را نیز با توجه به نیازهای خود ویرایش کنید که شرح آن در ادامه آمده است.

نکته: پس از تنظیم فایلها باید آنها را روی هاست دانلود خود در پوشه public_html یا www  آپلود نمایید.

چنانچه هاست دانلود شما با وب سرور Litespeed راه اندازی شده باشد می‌توانید از فایل htaccess برای انجام کانفیگهای لازم روی هاست استفاده کنید.

در فایل htaccess موجود دو کانفیگ مهم برای هاست دانلود انجام شده است که به شرح زیر است:

1- ارجاع لینکها به فایل index.php

<IfModule mod_rewrite.c>

   RewriteEngine On

   RewriteCond %{REQUEST_FILENAME}  -f [OR]

   RewriteCond %{REQUEST_FILENAME} !-f

   RewriteCond %{REQUEST_URI} !/files

   RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]

</IfModule>

در کد بالا تمامی لینک‌ها جهت  بررسی به فایل index.php ارجاع داده می‌شوند و  پس از بررسی های لازم اجازه دانلود صادر خواهد شد. در این کد در سطر 5 پوشه files را به عنوان پوشه اصلی فایلهای دانلود در نظر گرفته ایم که باید با نام پوشه اصلی که در فایل config.php تعریف کرده‌اید یکسان باشد.

2- جلوگیری از دانلود مستقیم فایلها

<FilesMatch "\.(zip|rar|mp4)$">

Order Allow,Deny

Deny from all

</FilesMatch>

در این کد ما امکان دسترسی مستقیم به فایلهای zip, rar, mp4 را مسدود کرده‌ایم که می‌توانید با توجه به نیاز خود آنها را تغییر دهید.

  • آپلود فایل: شما باید تمامی فایلهای خود را داخل پوشه مادر که در اینجا files تعیین کرده‌ایم آپلود کنید و البته می‌توانید داخل آن پوشه‌های متعددی جهت دسته‌بندی ایجاد کنید.
  • لینک دهی: فرض کنید آدرس هاست دانلود شما اینگونه است:ham3da.ir و یک فایل با این مسیر در آن آپلود کرده‌اید:

https://dl.ham3da.ir/files/test/myfile.zip

آن وقت لینک دانلود شما که در سایت وردپرسی خود مورد استفاده قرار می‌دهید؛ باید مانند زیر باشد:

https://dl.ham3da.ir/test/myfile.zip

همانطور که می‌بینید در هنگام لینک‌دهی مسیر files را از آدرس فایل حذف کرده ایم. حتماً این کار را انجام دهید در غیر این صورت افزونه به درستی کار نخواهد کرد.

هوک‌ها(فیلترها)

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

این هوک می‌تواند آدرس فایل مورد نظر شما را کدنگاری نماید:

apply_filters('wcpl_download_url', $URL);

این هوک یک پارامتر متنی با فرمت HTML را دریافت می‌کند و می‌تواند آدرس فایل‌های موجود در تگهای a, img, video, audio را کدنگاری نماید:

apply_filters('wcpl_filter_content', $content);

سوالات متداول

نخیر. در وب سرور Nginx فقط نیاز به اعمال کدهای کانفیگ Nginx می‌باشد.

فایلهای php و htaccess تنها برای وب سرور LiteSpeed مرود استفاده قرار می‌گیرند.

برای حفاظت از لینک‌های دانلود وب سرور Nginx بهترین و بالاترین کیفیت را دارا می‌باشد.

نخیر. وب سرور Nginx و در مرحله بعد LightSpeed برای این کار مناسب می‌باشد.

ممکن است بعد از نصب افزونه و انجام تنظیمات لازم هنگام دانلود فایل با خطای 403 مواجه شوید که بیانگر یکی از موارد زیر می‌باشد:

  1. IP کاربر تغییر یافته است. اگر بعد از شروع دانلود فایل، IP کاربر به هر دلیلی تغییر یابد خطای 403 رخ خواهد داد و کاربر برای دانلود مجدد باید صفحه دانلود سایت را دوباره باز کند و اقدام به دانلود نماید.
  2. کلید امنیتی افزونه با کلید امنیتی موجود در کد کانفیگ هاست دانلود یکسان نیست که با اصلاح کلیدها خطا برطرف خواهد شد.
  3. لینک دانلود کدنگاری نشده است که در این صورت باید تنظیمات افزونه را بررسی کنید.
  4. گاهی اوقات نیز ممکن است هیچکدام از موارد بالا صادق نباشد که در این صورت بهتر است از تنظیمات افزونه روش تشخیص IP را تغییر دهید و هر کدام که بهتر بود از همان استفاده کنید.

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