محمد
3 ماه پیش توسط محمد مطرح شد
1 پاسخ

نمایش ویدئویی که تو سرور FTP ذخیره کردیم به صورت امن

سلام خدمت همگی، من میخوام فایل های ویدئو رو که تو سرور ftp ذخیره کردم رو بتونم به کاربر نشون بدم به صورتی که آدرس فایل لو نره و این کار به صورت ایمن انجام بشه، در ضمن با لاراول کار میکنم،

ممنون میشم بتونید راهنماییم کنید


ثبت پرسش جدید
علی جنگی
تخصص : Web developer-Cyber ​​lawyer
@jangi 3 ماه پیش مطرح شد
1

سلام! برای نمایش امن ویدئوهایی که روی سرور FTP ذخیره کرده‌اید، بدون اینکه آدرس مستقیم فایل به کاربر نشان داده شود، می‌توانید از مراحل زیر استفاده کنید:

1. راه‌اندازی یک سرویس استریم (Streaming)

با استفاده از این روش، ویدئو را به صورت مستقیم از سرور به کاربر ارسال می‌کنید بدون اینکه لینک مستقیم به او نشان داده شود.

- **ایجاد یک Route در لاراول**: یک route جدید در فایل `web.php` ایجاد کنید که درخواست‌های استریم ویدئو را هندل کند:
```php
Route::get('/video/stream/{filename}', [VideoController::class, 'streamVideo']);
```

- **ایجاد کنترلر برای استریم ویدئو**:
در `VideoController`، یک متد برای استریم ویدئو ایجاد کنید:

```php
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\StreamedResponse;

class VideoController extends Controller
{
    public function streamVideo(Request $request, $filename)
    {
        $filePath = "ftp://username:password@ftp-server-address/path-to-video/$filename"; 

        return response()->stream(function () use ($filePath) {
            $stream = fopen($filePath, 'r');
            while (!feof($stream)) {
                echo fread($stream, 1024 * 8);
                flush();
            }
            fclose($stream);
        }, 200, [
            'Content-Type' => 'video/mp4',
            'Content-Length' => filesize($filePath),
            'Accept-Ranges' => 'bytes',
            'Content-Disposition' => 'inline; filename="' . $filename . '"',
        ]);
    }
}
```

- **محدودیت دسترسی**:
  می‌توانید با استفاده از middleware‌های لاراول مانند `auth` دسترسی به این route را محدود کنید تا فقط کاربران مجاز بتوانند ویدئو را مشاهده کنند.

2. استفاده از Temporary URL

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

3. Stream کردن مستقیم از FTP

- از توابع PHP مانند `ftp_fget` یا `stream_get_contents` برای خواندن فایل‌ها از سرور FTP استفاده کنید و آن‌ها را در پاسخ به کاربر ارسال کنید.

4. Caching و یا Pre-loading ویدئو

- اگر حجم فایل‌ها بالا نیست، می‌توانید فایل‌های ویدئویی را به صورت موقت در سرور وب ذخیره کنید و سپس به کاربر نمایش دهید.

نکات امنیتی:

  • اعتبارسنجی فایل‌ها: اطمینان حاصل کنید که نام فایل‌ها و مسیرها به درستی اعتبارسنجی شده‌اند تا از حملات تزریق (Injection) جلوگیری شود.
  • محدودیت دسترسی: همیشه بررسی کنید که کاربر مجاز به دسترسی به این ویدئو هست یا نه.
  • ایجاد لینک‌های موقت: اگر امکان دارد، لینک‌های موقت تولید کنید که فقط برای مدت زمان خاصی معتبر باشند.

با استفاده از این روش‌ها می‌توانید فایل‌های ویدئویی را به صورت ایمن و بدون نمایش آدرس واقعی به کاربر، استریم کنید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام