【问题标题】:Verifying an 'if' request from inside the website从网站内部验证“if”请求
【发布时间】:2017-12-30 01:13:02
【问题描述】:

我正在尝试对在网站内播放的视频应用一些保护,使其不被播放器本身以外的任何东西下载。

我想出了以下解决方案:

查看文件:

@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 将无法。

【问题讨论】:

    标签: php security laravel-5 token


    【解决方案1】:

    据我所知这是不可能的,因为在 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 的评论:在使用上述方法之前,请查看这里How reliable is HTTP_REFERER?

    【讨论】:

    • $_SERVER['HTTP_REFERER'] 不可靠,这就是为什么How reliable is HTTP_REFERER? - 您应该编辑您的答案以告知他们。编辑:我注意到了编辑,太好了。
    • 感谢源链接..@FunkFortyNiner
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 2015-03-31
    • 2015-05-13
    • 2015-02-13
    • 1970-01-01
    相关资源
    最近更新 更多