Php 防止轻松下载视频

Php 防止轻松下载视频,php,html,video,Php,Html,Video,我正在创建一个网站,我需要在其中显示一些资源,如PDF,在线视频。条件是它们不应该被用户下载 对于PDF部分,我使用PDF2SWF创建了它们的SWF,并将它们显示给用户。然而,我对视频感到困惑 我看到了问题的症结所在,并寻求一些解决方案。然而,有人建议使用来屏蔽。这看起来不错,但当涉及到创建JS控件来创建自定义按钮和滑块时,这听起来太复杂了 第一个链接中关于临时代币的另一个解决方案很好,我期待着使用它。但我对此有点困惑。我的环境是PHP,MySQL。 我不清楚的一点是,服务器何时用验证URL,在

我正在创建一个网站,我需要在其中显示一些资源,如PDF,在线视频。条件是它们不应该被用户下载

对于PDF部分,我使用PDF2SWF创建了它们的SWF,并将它们显示给用户。然而,我对视频感到困惑

我看到了问题的症结所在,并寻求一些解决方案。然而,有人建议使用
来屏蔽
。这看起来不错,但当涉及到创建JS控件来创建自定义按钮和滑块时,这听起来太复杂了

第一个链接中关于临时代币的另一个解决方案很好,我期待着使用它。但我对此有点困惑。我的环境是PHP,MySQL。 我不清楚的一点是,服务器何时用验证URL,在我的情况下,它应该发送一个指向实际视频文件的链接,以便在浏览器中播放视频,不是吗?因此,它最终有点违背了代币的用途


我怎样才能真正实现这一点?非常感谢您提供的任何帮助:)

请在请求视频时生成哈希:

//just an example, hash however you want
$hash = md5(filesize($video), true));
然后在会话中保存此哈希

session_start();
$_SESSION['video_hash'] = $hash;
然后重定向

Header('Location: http://domain.tld/path/to/video.ext?vh='.$hash);
现在,在视频实际加载的页面上:

session_start();
if($_GET['vh'] === $_SESSION['video_hash'])):
    //play the video
    //video code here
    //expire the hash
    $_SESSION['video_hash'] = null;
else:
    //forbidden error
    header('HTTP/1.0 403 Forbidden');
endif;

这是而不是和“一切都结束”的方法,应该谨慎对待。

如果我使用屏幕记录器呢?如果我直接下载SWF并反编译它会怎么样?@vonUbisch这属于“不容易”的范畴,这就是为什么我说“容易”。。因为即使是YouTube上的视频也可以下载,所以我并不期待一些最先进的安全技术,但同时也不想太天真地将文件的URL直接显示到页面源代码中。您刚刚忘记了
$\u SESSION['video\u hash]=$hash的一个小撇号
。但是在
//视频代码中,这里的
会有类似
的内容,有人可以获取该URL并直接下载视频,不是吗?我弄错了吗?
.ext
实际上是一个PHP脚本,请查看如何执行它的详细信息。
.ext
也会提示浏览器将其中的任何内容视为
.ext
文件。好的,但当视频最终在浏览器上实际传输时,
video
标记将在服务器上显示实际视频文件的源,如果我没有错的话。而
视频
标签将出现在页面源中。用户能看到页面来源并获得服务器上视频文件的直接链接并下载吗?@tigerden,你说得对,如果我能看到视频,我就可以偷走它。除非您使用临时URL或DRM,否则无法100%保证您的视频不会被盗