php – 使用Apache的Flowplayer安全流

前端之家收集整理的这篇文章主要介绍了php – 使用Apache的Flowplayer安全流前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
更新:现在,这是一个关于如何给流式视频提供一定程度的安全性的教程:
1)您正在使用带Apache的Flowplayer
2)您不希望用户能够下载视频(仅流媒体)
3)您不希望用户能够将视频的URL放在浏览器中(受限访问视频)
4)您只希望用户能够流式传输视频,如果他们有正确的凭据

您必须拥有PHP和.htaccess文件的先前知识.

原帖:
我的客户希望他的视频被隐藏,以便在他们的域名购买之前不能流媒体(他不希望用户能够下载视频).我正试图用Flowplayer的安全流媒体来做到这一点,我想我几乎在那里9我现在有!搜索到处都找到了this post.

我通过.htaccess限制了其他网站的热链接,现在我试图限制某人只是复制网址并将其粘贴到地址栏(即http://www.mydomain.com/videos/testVideo.mov)

我使用PHP / AJAX来生成这个HTML(大多数例子使用JS Flowplayer Plugin,我使用< object>标签来嵌入播放器,没有JS涉及到,如果你使用JS插件,使用而不是嵌入式版本,.htaccess文件和video.PHP文件将是一样的.)

$videofilename = 'testVideo.mov';    
$hash = md5('1234');
$timestamp = time();
$videoPath = $hash.'/'.$timestamp.'/'.$videofilename;
echo '
<object width="667" height="375" type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.8.swf">
    <param name="wmode" value="transparent"/>
    <param name="movie" value="../swf/flowplayer.securestreaming-3.2.8.swf" />
    <param name="allowfullscreen" value="true" />
    <param name="timestamp" value="'.$timestamp.'" />
    <param name="token" value="'.$hash.'" />    
    <param name="streamName" value="'.$videofilename.'" />      

    <param name="flashvars" value=\'config={
        "playlist":[
            {"url": "'.$videoPath.'","baseUrl": "http://www.mydomain.com/videos","autoPlay":false,"autoBuffering":true,"bufferLength":5}
            ]

        }\' />
</object>';

现在在目录中我把这个.htaccess文件放在了这个文件里:

RewriteEngine on
 RewriteRule ^(.*)/(.*)/(.*)$http://www.mydomain.com/vidoeos/video.PHP?h=$1&t=$2&v=$3
 RewriteRule ^$- [F]
 RewriteRule ^[^/]+\.(mov|mp4)$- [F]

更新:
PHP文件的目的是1)获取数据哈希,时间戳和视频文件名(test.mov或其他任何内容)2)确保一切检查(我在此示例中有意忽略了安全检查的长度)和3)给Flowplayer的视频流.确保$originaltimestamp和$hash在提供访问之前是好的.您还可以检查会话凭据,从数据库获取“真实”文件位置,或者在给予用户访问权限之前进行任何类型的PHP安全检查.

还要记住要更改Content-type:字段,使其与正确的文件扩展名相关(即视频/ mp4如果视频是* .mp4)

而video / video.PHP如下所示:

<?PHP
session_start();

$hash = $_GET['h'];
$streamname = $_GET['v'];
$originaltimestamp = $_GET['t'];

header('Content-Description: File Transfer');
header('Content-type: video/quicktime');
header("Content-length: " . filesize($streamname));
header("Expires: 0");
header("Content-Transfer-Encoding: binary");

$file = fopen($streamname,'r');
echo stream_get_contents($file);    
fclose($file);
?>

总共有三个文件,带有播放器的HTML,.htaccess文件,最后是video.PHP文件.我原来的问题是$streamname是错误的.记住$streamname应该是BaseUrl之后(或下)的文件位置.希望这有助于像我这样的人!

任何人以这种方式看待安全问题?

好的我解决了!在这行:

$streamname =“http://www.mydomain.com/videos/\”.$streamname; (不再在那里)

我错了我所要做的只是删除这一行,它的工作.它将从你的baseUrl开始.所以它已经在’视频’文件夹,所以$streamname应该只等于在baseUrl之后文件的位置.

在旁注中,我花了大约一个星期来解决我在互联网上无处不在的把它们放在一起.我创建了这个教程,所以其他人不会有这样的头痛(希望!)

原文链接:https://www.f2er.com/php/132897.html

猜你在找的PHP相关文章