PDA

View Full Version : حرفه ای: دانلود محافظت شده از هاست دانلود Protect downloads on remote server



a_mogheimi
شنبه 08 شهریور 1393, 14:20 عصر
سلام
من دوتا هاست دارم
سرور 1 : حاوی دامین اصلی و وردپرس با افزونه easy digital download
سرور 2: که ساب دامین بهش وصل شده و هاست دانلود بهش متصل هست
من میخوام فایل رو برای فروش قرار بدم از اونجایی که اگه فایل در سرور 1 باشه خود افزونه easy digital از فایل محافظت میکنه و نمیذاره کسی که مبلغ رو پرداخت نکرده فایل رو دانلود کنه
ولی از اونجای که اینجوری حجم زیادی واسه فایلها استفاده میشه و پهنای باند زیادی هم گرفته میشه ترجیح دادم فایل ها رو روی هاست دانلود قرار بدم
ولی با این شرایط اگه یه نفر فایلی رو بخره و لینک دانلود رو بگیره بعد از اون میتونه از این لینک 100 مرتبه دیگه استفاده کنه و شاید با کمی کنجکاوی فایلهای دیگه رو هم بتونه دانلود کنه چون این افزونه از لینک های خارج از سرور اصلی محافظت نمیکنه
حالا من میخوام در این زمینه منو راهنمایی کنید که:
1. محتویات فایل .htaccess روی سرور 2 چگونه بایدباشه
2. چجوری از فایلهای سرور 2 محافظت کنم و محدودیت زمانی و محدودیت تعداد دفعات دانلود رو روی هر فایل اعمال کنم
3. چگونه از این لینک ها در افزونه easy digital استفاده کنم

در ضمن این مطلب رو هم خوندم ولی هرکاری کردم ج نداد که نداد
http://stackoverflow.com/questions/10964399/protect-downloads-on-remote-server

با تشکر ( ای دی یاهو nim_rooo2@yahoo.com )

a_mogheimi
یک شنبه 09 شهریور 1393, 11:00 صبح
یعنی کسی نمیدونه باید چیکار کنم ؟
اگه هزینه ای داره تقبل میشه لطفا کمک کنید

a_mogheimi
دوشنبه 10 شهریور 1393, 08:26 صبح
up up

a_mogheimi
جمعه 14 شهریور 1393, 10:36 صبح
لطفا کمک کنید

a_mogheimi
دوشنبه 17 شهریور 1393, 10:13 صبح
از شما که بخاری بلند نشد
یه کد پیدا کردم و اینجوری تغییرش دادم :
تو هاست دانلود این کار ها رو انجام دادم
1. ایجاد فولدر dl و قرار دادن فایل zip مورد نظر در اون فولدر
2. ایجاد فایل htaccess در شاخه اصلی هاست با محتویات زیر :


Options -Indexes
deny from all
<FilesMatch '\.(php)$'>
Order Allow,Deny
Allow from all
</FilesMatch>

اینجوری دسترسی به لینک مستقیم فایل ها رو غیر فعال کردم
3. یک فایل پی اچ پی به اسم download.php در شاخه اصلی هاست با محتویات زیر ساختم


<?PHP
$file = $_GET['f'];
$code = $_GET['c'];
$ip = $_SERVER['10.000.06.107'];

if ($code != md5($ip . 'salt')) {
die('authentication denied');
}

if(!file)
{
die('file not found');
}

// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");

// Read the file from disk
readfile('dl/' . $file);
?>

4. حالا نوبته قرار دادن لینک دانلود در هاست اصلی هست
یک فایل php با محتویات زیر ساختم


<?PHP
echo '<a href="http://dl.server2.com/Files/download.php?f=ali.zip&c=' . md5($_SERVER['10.000.06.107'] . 'salt').'">Download File</a>';
?>


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

در این حالت چند تا مورد مطرح میشه
1. لینک های تولیدی توسط فایل سرور یکسانه و برای هر فایلی که میذاریم واسه دانلود تغییر نمیکنه. چه تغییریباید در کد بدیم تا بشه لینک های تولیدی در هر دو فایل پی اچ پی مثل هم باشند ولی متفاوت برای هر فایل ؟
2. چطوری محدودیت زمانی و تعداد دفعات دانلود رو لحاظ کنیم ؟

منتظر پاسخ دوستان هستم.

a_mogheimi
سه شنبه 18 شهریور 1393, 00:05 صبح
یعنی واقعا اینجا کسی نیست از این سوال سر در بیاره

a_mogheimi
چهارشنبه 19 شهریور 1393, 22:40 عصر
همچنان منتظر یاری سبزتان هستیم

a_mogheimi
یک شنبه 23 شهریور 1393, 14:17 عصر
up .................................

shahriyar3
یک شنبه 23 شهریور 1393, 16:22 عصر
فرض که شما فایل ها رو تو سرور دانلود تو همچین مسیری ذخیره کنی
files/1393-06-23
حالا برای هر فایل یک رکورد تو mysql اگر ایجاد کرده باشی و تو یکی از فیلد هاش تاریخ براش در نظر گرفته باشی

id = 1 ---- name = file name ------ tarikh = UNIX_TIMESTAMP()
اینجوری خیلی راحت میتونی بدون اینکه اشاره مستقیم به آدرس فایل داشته باشی فایل و با هدر های دانلود فراخوانی کنی
مثال
http://example.com/name=filename&tarikh=UNIX_TIMESTAMP

برای امنیت بیشتر از encryte اسم فایل و تاریخ هم میتونی استفاده کنی تو URL

a_mogheimi
پنج شنبه 27 شهریور 1393, 07:30 صبح
بالاخره کار تموم شد
خودم این افزونه رو نوشتم علاقه مندان جهت تست افزونه می تونن به سایت بنده مراجعه کنند و کلیه قابلیت های افزونه رو تست کنند
خلاصه ای از قابلیت هارو اینجا مینویسم :
1. بدون نیاز به تغییر در لینک های دانلود
2. قابلیت کنترل چندین هاست دانلود
3. قابلیت اعمال محدودیت دانلود و محدودیت زمانی
4. قابلیت تنظیم دانلود به زور و یا دانلود در حالت ریسوم
5. تمام این تنظیمات بستگی به تنظیمات خود edd داره و شما نیاز به تنظیمات اضافی ندارید
6. استفاده همزمان از هاست های دانلود و هاست اصلی وردپرس

saeed-71
پنج شنبه 27 شهریور 1393, 17:02 عصر
شما مگه از easy digita استفاده نمیکنی؟برو تو پیکربندی بعد >> متفرقه >> بعد نحوه دانلود رو بذار به زور
دیگه همینی که شما میخواین رخ میده
انقدرم خودتو اذیت نکن

a_mogheimi
شنبه 29 شهریور 1393, 06:47 صبح
شما مگه از easy digita استفاده نمیکنی؟برو تو پیکربندی بعد >> متفرقه >> بعد نحوه دانلود رو بذار به زور
دیگه همینی که شما میخواین رخ میده
انقدرم خودتو اذیت نکن
شما ظاهرا متوجه عرایض بنده نشدید
اگه بخوای فایلها رو روی هاست دانلود بزاری و لینک شو همینطوری بدی به ایزی دیجیتال که لینک اصلی لو میره و دیگه هیچ کنترلی روش نداری
در ضمن در حالت بزور ریسوم غیر فعال میشه
کاری که من انجام دادم اینه که تمام قابلیت های ایزی دیجیتال رو به هاست دانلود هم اضافه میکنه یعنی حتی اگه لینک خارجی به ایزی دیجیتال بدی و کاربر لینک تو رو با دانلود منیجرهم بدست بیاره بازم نمیتونه دانلود کنه چون فایلها در هاست دانلود توسط این اسکریپت محافظت میشن
با تشکر

ashokri.nll
شنبه 29 شهریور 1393, 08:57 صبح
سلام
دوست عزیز من چندوقت پیش برای یک دوستی این کارو کردم میتونی یه کاری کنی که با کرون هر مثلا 12 ساعت نام فایل ها عوض بشه به یه چیزی که فقط خودت سردربیاری بعد هم نام اون فایل رو ذخیره کنی بعد از خرید کاربر لینک رو بهش بدی .

a_mogheimi
شنبه 29 شهریور 1393, 16:57 عصر
سلام
دوست عزیز من چندوقت پیش برای یک دوستی این کارو کردم میتونی یه کاری کنی که با کرون هر مثلا 12 ساعت نام فایل ها عوض بشه به یه چیزی که فقط خودت سردربیاری بعد هم نام اون فایل رو ذخیره کنی بعد از خرید کاربر لینک رو بهش بدی .

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

saeed-71
شنبه 29 شهریور 1393, 18:55 عصر
عزیز خوب اون شیوتو بگو منم یاد بگیرم :)

a_mogheimi
چهارشنبه 02 مهر 1393, 22:02 عصر
عزیز خوب اون شیوتو بگو منم یاد بگیرم :)
کاری رو که این دوستمون گفتند انجام دادم البته راه حل گفتن یه چیزه و کد نویسی وبه نتیجه رسیدن یه چیزه دیگه
که خدارو شکربه نتیجه رسوندمش

فرض که شما فایل ها رو تو سرور دانلود تو همچین مسیری ذخیره کنی
files/1393-06-23
حالا برای هر فایل یک رکورد تو mysql اگر ایجاد کرده باشی و تو یکی از فیلد هاش تاریخ براش در نظر گرفته باشی

id = 1 ---- name = file name ------ tarikh = UNIX_TIMESTAMP()
اینجوری خیلی راحت میتونی بدون اینکه اشاره مستقیم به آدرس فایل داشته باشی فایل و با هدر های دانلود فراخوانی کنی
مثال
http://example.com/name=filename&tarikh=UNIX_TIMESTAMP

برای امنیت بیشتر از encryte اسم فایل و تاریخ هم میتونی استفاده کنی تو URL