簡體   English   中英

驗證來自網站內部的“如果”請求

[英]Verifying an 'if' request from inside the website

我正在嘗試對在網站內播放的視頻應用一些保護,以免被播放器本身以外的任何東西下載。

我想出了以下解決方案:

在視圖文件中:

@php
$token = uniqid ();
Session::put('videoToken',$token);
@endphp

<video id="my-video" class="video-js" controls preload="auto" width="800" height="450"
                           poster="{{$post->thumbnails}}" data-setup="{}">
                        <source src="{{route('videoView',['id'=> $post->id]}}?token=$token" type='video/mp4'>

                        <p class="vjs-no-js">
                            To view this video please enable JavaScript, and consider upgrading to a web browser that
                            <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
                        </p>
                    </video>

視頻查看路線:-

Route::get('/video/{id}',function(Request $request){
if ($request->token == Session::get('videoToken'))
{
$post = Post::find($id);
return response()->download($post->path, 'vid.mp4');
}
else{
die();
}
})->name('videoView');

對於上述編碼,我將確保僅在驗證“$token”時才生成視頻文件。 如何添加額外的層來驗證請求是否來自播放器所在的頁面,以便任何嘗試使用以下 URL 下載視頻的人: http : //mywebsite.com/video/5?token= 54syrerrerw3rre ,將無法。

據我所知這是不可能的,因為在 HTTP 協議中,每個請求都獨立於其他請求 但是我有一種方法來檢查請求是否來自源域。 像這樣嘗試,如果它來自同一個域,它將返回true否則返回false

function requestIsFromSameSourceDomain(){

   if ((isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']))) {

     if (strtolower(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST)) != strtolower($_SERVER['HTTP_HOST'])) {
       return false;
     }else{
       return true;
   }
  }
}

根據Funk Forty Niner 的評論:請看這里HTTP_REFERER 的可靠性如何? 在使用上述方法之前

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM