PDA

View Full Version : جلوگیری از دانلود مسقیم



arvant
شنبه 25 آذر 1391, 11:19 صبح
سلام .
یه سناریو :)
من می خوام یه فروشگاه فایل داشته باشم ولی نمی خوام زیاد پیچیدش کنم .
یه درگاه پرداخت دارم که وقتی دکمه پرداخت درست می کنی دوتا لینک میگیره
1- لینک در صورت پرداخت موفق
2-لینک در صورت پرداخت نا موفق
الان من می خوام لینک پرداخت در صورت موفقیت رو آدرس فایلی که می خوام بفروشم رو که رو هاست خودمه بدم .
اما نمی خوام که طرف مستقیماَ به تونه فایل رو دانلود کنه:لبخند:
البته می دونم که باید از .htaccess و تعریف رول ها استفاده کنم ولی دقیقش رو نه
از اونجا که اکثر پی اج پی کارای حرفه ای با این فایل اشنایی دارن می خواستم کمک کننید.
می خوام فقط در صورتی فایل دانلود بشه که کاربر از سایت درگاه پرداخت به ادرس فایل راهنمایی میشه

siavashsay
شنبه 25 آذر 1391, 11:40 صبح
کار کردن با htaccess رو بلد نیستم کاملا اما به عنوان یه ایده !
شما میتونید وقتی کاربر از درگاه بانک با موفقیت اومد به سایت شما لینک فایل رو بهش بدید و وقتی روی اون کلیک کرد و خواست دانلود کنه ( بعد از لود دانلود ) با استفاده از یه Rename اسم فایل رو عوض کنید !
تا دیگه نتونه مجدد اون فایل رو دانلود کنه و انگار فایل براش یک بار مصرف میشه !
البته این تئوری هست ! چون کاربری که پول یک فایل رو داده باید بتونه باز هم اونو دانلود کنه ! مگه اینکه به اون کاربری که پول داده Access بدید تا بتونه باز هم فایل رو دانلود کنه !
بازم نظر بقیه اساتید بهتر باشه شاید!
:)

arvant
شنبه 25 آذر 1391, 11:48 صبح
این جوری که من باید برای هر دانلود برم به سایت درگاه پرداخت و ادرس فایل جدید رو جایگزین کنم :)

siavashsay
شنبه 25 آذر 1391, 12:12 عصر
خوب سناریوتونو اینطوری بنویدسید :
1- شما یک سایت فروشگاه فایل دارید !
2- میخواید در قبال پولی که داده میشه فایل بفروشید !
حالا شما باید 2 تا حالت رو در نظر بگیرید ...
حالت 1 - اینکه سایت شما از سیستم اعتباری پیروی کنه ...
به این صورت که شما مثلا 3 تا پلان مشخص میکنید : 10000 تومان 1ماهه --- 15000 تومان 2 ماهه ---- 25000 تومان 3ماهه
حالا هر کسی که هر پلانی مشخص میکنه و پول اون پلان رو پرداخت میکنه باید یک مدتی بتونه از فایل های شما استفاده و دانلود داشته باشه !
اینطوری دیگه نیازی به رفتن به صفحه پرداخت بانک نیست ! ( فقط یک بار نیاز هست )
-------
حالت 2 - اینکه شما مثلا برای هر فایل مبلغ 100 تومان در نظر میگیرید ! شما باید یک سیستم اکانت بالانس ( Accoune Balance ) یا بانک در سایت خوتون راه بندازید و هر کاربر هر مقدار پولی که خواست به سایت شما واریز کنه ( از طریق درگاه بانک ) و شما به اون کاربر اعتبار میدید و در ازای دانلود هر فایل مبلغ 100 تومان از حساب کاربری اون کم میکنید . اینطوری دیگه نیازی به رفتن صفحه بانک به صورت چندین بار نیست !
مثلا یک کاربر مبلغ 1000 تومان به سایت شما واریز میکنه و میتونه 10 تا فایل دانلود کنه !
-------
االبته پلان های دیگه ای هم هست که میشه بر اساس مقدار حجم دانلودی کاربر اعتبار عنوان کرد مثل سایت های معروف rapidbaz وغیره !
به هر حال در این 2 حالت شما توی سیستم کاربری اعضای خودتون میتونید اونا رو محدود و مورد آنالیز قرار بدید که فایلی رو چطور دانلود کنن ! :)

arvant
شنبه 25 آذر 1391, 12:27 عصر
گفتم که نمی خوام اینقدر پیچیدش کنم .
پول میدی فایل دانلود می کنی :) بعداَ هم امکان دانلود دوباره نداری می خواستی فایلت رو از بین نبری برو دوباره بخر :)

siavashsay
شنبه 25 آذر 1391, 12:35 عصر
:)) ببخشیدا - اما این نهایت شارلاتان بازیه دیگه :))
آخه دوست عزیز وقتی طرف پول میده شما فایل رو کجا بهش میدی ؟! یا باید تو پنل کاربری اون آدم باشه ! یا باید آدرس بهش ایمیل شه !
اما اینو بگید که فایل رو یک کاربر چطوری میتونه از بین ببره ؟! یه خورده پیچیده کردید !
باید یک منطقی وجود داشته باشه آخه !

rezaonline.net
شنبه 25 آذر 1391, 14:01 عصر
میتونید از آدرس دهی دینامیک به واسه دیتابیس استفاده کنید .

Unique
شنبه 25 آذر 1391, 16:21 عصر
ببینید شما باید برای هر درخواستی فایلی که پرداخت شده یک hash تولید کنی بعد لینک دریافت را از طریق اون hash برای کاربر ایمیل کنی و برای هر hash هم 24 ساعت یا 48 ساعت یا هر چی صلاح میدونی اجازه دریافت فایل را بدی بعدش هم دیگه فایل دانلود نشه ، نگران اشتراک لینک نباش چون کسی که پول داده معمولا این کار را نمیکنه تازه اگه هم کرد 48 ساعت بعدش بسته میشه تا 4 نفر بخوان سوء استفاده کنند دیگه دسترسی وجود نداره آخر آخرش هم خودش میتونه فایل را بگذاره روی 4shared یا mediafire یا هر جای دیگه واسه دانلود پس فکرش را هم نکن.

میشه یکسری امنیت بیشتر گذاشت اما نیاز نیست ! مثلا 90% ما ایرانی ها یا روی یاهو هستیم یا گوگل یا حالا سایت شخصی ، میتونی دامنه HTTP REFERRER را چک کنی اگه با ایمیل خودش مطابقت داشت اجازه دانلود بدی ! روی IP بانک هم حساب باز نکن چون ممکنه تغییرش بدند و تا شما بفهمی کلی مشتری بپره ! اگه گیر HTACCESS برای IP روی یک فولدر هستی هم اینه ولی بنظرم این کار را نکن :


<Directory “/var/domain.com/www/files”>
Order Deny,Allow
Deny from All
Allow from 81.97.62.218
</Directory>

arvant
یک شنبه 26 آذر 1391, 17:31 عصر
RewriteEngine On
RewriteCond %{HTTP_REFERER} !(www.)?example.com/download-page.php
RewriteRule .* - [F]

Sometimes you want the user to access something (a web page or a downloadable file) only by clicking a link on your own website instead of being able to directly access it by typing in the URL address in the browser address bar. This is achievable by a few lines in .htaccess.

این رو پیدا کردم به نظرتون چقدر امن و بدرد بخوه؟
توی ادرسی که مورد قبوله ادرس درگاه پرداخت رو مینویسم :)

yones_safari
چهارشنبه 29 آذر 1391, 00:27 صبح
درود
اگه (فایلها حجیم نیستند و تعداد کاربران کمه) یا (فایلها حجیم و تعداد کاربرانت زیاده و سرور سایتت قوی هست) میتونی از روش مقدار دهی header استفاده کنی و فایلها رو بفرستی برا دانلود.البته باید دسترسی به فایلها رو هم از htaccess غیر فعال کنی.
موفق باشی

$ M 3 H R D A D $
چهارشنبه 29 آذر 1391, 01:40 صبح
دوست عزیز من خودم 3 سال php کار می کنم از بالای صفحه که می آمودم پایین نظرارو میخوندم کلی از استعداد و روش های جالب دوستان کیف کردم که انقدر خالصانه در اختیار دوستا نیم زارن
روش های دوستان و پی بگیرید و رو حرف خودتون پا فشاری نکنید

Reza1607
چهارشنبه 29 آذر 1391, 10:30 صبح
شما زماني كه فايل رو آپلود مي كنيد اسم فايل رو عوض كنيد و در ديتابيس اسمي كه فايل رو با اون آپلود كردين + اسمي كه rename كردين رو داخل ديتابيس ذخيره كنيد
يعني داخل ديتابيس يه همچين چيزي داريد






mime path name id
image/jpeg file/salkdjklasjdklasd a.jpg 1
application/pdf file/asdasdasdasdas b.pdf 2
...



و براي لينك دانلود به اين صورت عمل كنيد
http://yourdomain.com/dl.php?id=1
بعد زماني كه كاربر رو اين لينك كليك كرد شما اول چك كن كه آيا مجاز به دانلود هست يا نه؟ اگه نبود كه هيچ ولي اگه مجاز بود شما با يك كوئري ساده مسير واقعي ( همون اسمي كه rename) كردين رو بدست ميارين و با استفاده از header فايل رو در اختيار كاربر قرار مي دين با اين تفاوت كه از كد زير استفاده مي كنيد



$query='select `name`,`path`,`mime` from `files` where `id`=1';
$result=mysql_query($query);
if(mysql_num_rows===1){
$row=mysql_fetch_assoc($result);
header('Content-type: '.$row['mime']);
header('Content-Disposition: attachment; filename="'.$row['path'].'"');
readfile($row['name']);
}

mamali-mohammad
چهارشنبه 29 آذر 1391, 10:45 صبح
من قبلا اینو نوشتم
بهترین روش اینه :
برای هر فایل یه نام راندوم بزار که اولا کسی نتونه مسیر فایلتو پیدا کنه ( با تاریخ یا md5 خوبه )
دوم برای هر خرید یه کد 9 رقمی تخصیص بده ( یا همون شماره تراکنش )
اینور لینک رو به طرف میل بزن :

download.php?id=302545312
این لینک برای هر فرد متغیره دیگه
حالا طرف که روش کلیک کرد میاد توی صفحه download.php
1- بررسی کن این کد در دیتابیس هست
2- حالا که این کد هست pid مورد نظر رو بکش بیرون ، برو از اون نام فایلتو ( که قبلا md5 کردی ) رو بکش بیرون و با یه header بزار برای دانلود

برای اینکه نتونن چندین بار دانلود کنن کافیه یه cron jobs بزاری و خیلی تمیز هر 24 ساعت یه بار کدهارو صفر کنه !!

مجموعا 30 دقیقه ازت وقت نمیبره بخوای بنویسیش

iner30
دوشنبه 04 دی 1391, 14:07 عصر
یه سوال پیش اومده برام
وقتی با دانلود منیجر دانلود میکنی ، آدرس فایل رو میزنه نه لینکی که روش کلیک شده ...
خب وقتی طرف اون لینک رو بده هر کسی ، خب میشه دانلود کرد !!! نمیشه؟

$ M 3 H R D A D $
جمعه 11 اسفند 1391, 11:59 صبح
یک آموزش دیدم که میشد سرعت دانلود فایل و با php تنظیم کرد و قابلیت resume
در مورد اینا توضیح بدید لطفا
و اینکه : میشه فهمید که فلان فایل " خرید شده " + یک بار به طور کامل دانلود شد
؟
میخوام بفهمیم فلان فایل کامل دانلود شد و دیگه دسترسیش و ببندم