【问题标题】:How do you hide the url of the .flv file in a flash player?如何在 Flash 播放器中隐藏 .flv 文件的 url?
【发布时间】:2009-02-17 20:49:36
【问题描述】:

我使用过期网址来隐藏我在我的网站上使用的图片的网址,以便它们只能在哈希的生命周期(1 小时)内进行热链接。

我检查与文件 url 一起发送的哈希值,与服务器上的哈希值相匹配,如果它们匹配,脚本将调用以下代码:

if (isset($_GET["hash"])) {
        $this_min = date('Y-m-d-g',time()) . "salt" . $vid_id;
        $current_hash =  substr(md5($this_min),0,12);
        $submitted_hash = mysql_real_escape_string($_GET["hash"]);
        if ("$current_hash" == "$submitted_hash") {
            $file_url2 = "directory/" .  $vid_file;
            header('Content-Type: application/octet-stream');
            header("Content-Transfer-Encoding: Binary"); 
            header("Content-disposition: inline; filename=\"".md5($vid_file)."\""); 
            readfile($file_url2);
            exit;
        } else {
            $_SESSION["message"] = "Download link expired, refresh the page and try again";
            $_SESSION["message_type"] = 0;
            header("Location:" . $_SERVER['HTTP_REFERER']);
            exit;       
        }
    }

我在标签中使用它(例如,<img src="index.php?id=123&hash=ew6rg5reg4">,它工作得很好。如果图像是热链接的,它会在哈希更改时停止工作,每小时(或必要时每分钟)。不幸的是,这种方法相同当我使用它加载.flv 文件到flash 播放器时不起作用,例如JW 播放器。没有加载.flv 文件。

我有什么方法可以解决这个问题或使用替代方法实现相同的目标?

【问题讨论】:

  • 如果有人在 6 点 59 分 45 分下载您的网页,但连接速度很慢,那么大多数嵌入的图像将无法加载,我是否理解正确?这似乎不太幸运......

标签: php flash


【解决方案1】:

您无法真正有效地隐藏下载 URL。例如,Safari 会公开通过“活动”窗口下载的所有资源。只需查找大小为 MB 的项目,即您的 FLV 文件。

阻止人们翻录您的 FLV 的唯一方法是使用 RTMP 流媒体,他们永远无法访问完整文件。

【讨论】:

    【解决方案2】:

    您可以使用 htaccess fils(仅限 apache 服务器)阻止您的域以外的引荐来源网址

    RewriteEngine On
    Options +FollowSymLinks
            <ifmodule mod_rewrite.c>
        RewriteCond %{HTTP_REFERER} !^$
        RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
        RewriteRule \.(gif|jpg|png|mp3|mpg|avi|mov|flv)$ - [F]  
        </ifmodule>
    

    【讨论】:

    • 但是referrer是可以伪造的!
    【解决方案3】:

    想知道播放器脚本抛出什么运行时错误会很有趣吗?

    如果 MIME 类型设置为 video/x-flvflv-application/octet-stream,您可能有更多机会使其工作。

    【讨论】:

    • 没有运行时错误,只是不获取视频文件。这没有帮助。
    【解决方案4】:

    它应该也适用于 JW 播放器等。

    一些服务器,例如 nginx,有模块可以非常有效地进行这种验证,因此您不必在 PHP 中进行。

    【讨论】:

      【解决方案5】:

      真正限制对 flv 文件的访问的唯一方法是在文件所在的服务器上实现一些 ACL 之王或为其流式传输。 我正在使用 Wowza Media 进行实时视频流传输,服务器已经实现了多种机制来保护您的文件/流:基于 ACL 的身份验证、StreamNameAlias ...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-05
        • 2023-03-06
        • 1970-01-01
        相关资源
        最近更新 更多