代码之家  ›  专栏  ›  技术社区  ›  Julian

防止直接访问mp3/wav文件,同时允许flash播放器使用.htaccess(或PHP)访问这些文件

  •  6
  • Julian  · 技术社区  · 16 年前

    如何防止直接访问/下载mp3/wav文件,同时允许flash播放器使用.htaccess(或PHP)访问这些文件?我一直在寻找一个解决方案,只有部分和不起作用的解决方案,以显示我的努力。

    下面的解决方案看起来是一个伟大的修复开始,但它也阻止我的flash播放器访问文件。 我只能允许从特定页面访问吗?

    < Files ~ ".*\..*"><br />
    order allow,deny<br />
    deny from all<br />
    < /Files>
    

    下面的解决方案一开始看起来很棒,因为它不允许人们查看目录中的文件,但是如果用户知道音乐文件的确切URL,他们可以下载它:

    SetHandler application/x-httpd-php<br />
    SetHandler application/x-shockwave-flash
    

    现在,我遇到了 this post using htaccess 但在flash播放器屏幕上会弹出一个对话框。 有没有一种方法可以让页面在用户不做任何事情的情况下发送登录信息?


    另外,这是一个WordPress网站,因此,我将使用

    另外,我们希望阻止新手下载,而不是黑客/黑客/网络奇才。

    4 回复  |  直到 8 年前
        1
  •  8
  •   Goyuix    16 年前

    因为PHP是可用的,所以使用它来保护文件。不要把它们放在web根目录中,而是放在PHP可以访问的地方。然后生成一次性使用的URL,如:

    <?php
      $unique = md5( uniqid() );  // 32 hex characters
    ?>
    

    然后将该唯一值存储在session/server/db中,并让另一个页面在流式传输文件之前验证该唯一字符串:

    <a href="streamer.php?id=6dd4566eb245627b49f3abb7e4502dd6">Stream Me</a>
    

    一定要在第一次使用后(或者如果你觉得很慷慨的话,也可以在几次之后)让这个独特的令牌过期。无论如何,它不会阻止顽固分子捕获HTTP流,但它应该防止随意链接。

        2
  •  3
  •   Sam Hanes    16 年前

    一个简单的解决方案是每次为查看器页面提供服务时生成一个一次性键,然后通过一个PHP脚本检查内容。这样,用户至少需要加载他们想要的内容的查看器页面,并检查其来源以提取密钥,而不只是在浏览器的地址栏中放置一个URL。然而,如果你的网站变得非常流行,有人可能会提供一个脚本,自动做到这一点。例如,请参见 youtube-dl

    在你的帖子中你提到了用Apache保护文件的密码。也许可以让flashplayer应用程序提交HTTP身份验证,但我怀疑是否有任何现有的播放器支持这种身份验证,如果修改一个应用程序,则需要ActionScript的源代码和经验。任何能够在诸如读取页面源代码这样的琐碎攻击中幸存下来的解决方案都可能需要修改播放器。

        3
  •  0
  •   rook    16 年前

    有人总是能够出现,好像他们正在运行flash,并能够下载你的音乐。 TamperData 可以用来查看浏览器产生的所有流量(包括flash),并且能够回放、拦截和修改所有请求。Flash很容易反编译,但这可能不是必需的。

    deny from all cryptographic nonce

        4
  •  -1
  •   Andrew Myers Sanchit Panchwatikar    8 年前

    还有另一种解决方案,已经尝试过,而且相当成功:将歌曲加载到 <iframe>

    推荐文章