Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 防止直接访问文件_Apache_.htaccess - Fatal编程技术网

Apache 防止直接访问文件

Apache 防止直接访问文件,apache,.htaccess,Apache,.htaccess,我有几个音频文件,我不想让任何人访问它们。每个文件都在主文件夹中的一个单独文件夹中,我现在称之为“下载”。所以“下载”还有其他几个目录,每个目录中都有音频文件。这些音频文件在系统上的web应用程序中播放 问题是现在任何人都可以输入文件localhost/download/dir/sound.wav的完整地址并播放音频文件。这就是我想要防止发生的事情,我希望这些文件仅在从我们的应用程序访问或流式传输时才流式传输 我在.htaccess文件上尝试了以下操作 deny from all 这只是返回了

我有几个音频文件,我不想让任何人访问它们。每个文件都在主文件夹中的一个单独文件夹中,我现在称之为“下载”。所以“下载”还有其他几个目录,每个目录中都有音频文件。这些音频文件在系统上的web应用程序中播放

问题是现在任何人都可以输入文件
localhost/download/dir/sound.wav的完整地址并播放音频文件。这就是我想要防止发生的事情,我希望这些文件仅在从我们的应用程序访问或流式传输时才流式传输

我在.htaccess文件上尝试了以下操作

deny from all
这只是返回了一个
403禁止
页面,但我无法从应用程序中流式传输该文件

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)localhost.com/.*$ [NC]
RewriteRule \.(mp3|wav)$ - [F]
这只是禁用了流,所有这些都没有返回403或任何它只是没有从应用程序或直接访问流


最后,我使用AJAX调用保存要流式传输的文件的脚本;我可以使用哪些选项?

无法阻止用户访问这些文件

为了听到他们,他们必须下载到用户的计算机上,这意味着他们必须是可访问的


你能做的最好的事情就是在播放器中对文件进行加密和解密。但即便如此,玩家也可以进行反向工程,有人可以发现加密密钥和算法。最后你会发现你浪费了大量的处理时间,事实上减慢了你的应用程序

只有一个问题:服务器如何使用类似的协议来检测谁请求了您的媒体应用程序或其他系统

但是,如果您只是想阻止向您的媒体发出最简单的http请求,您可以使用一些令牌交换系统,例如,您的应用程序以特定格式发送媒体请求,服务器发送令牌以访问特定文件,然后您的应用程序可以访问提供令牌的特殊(比如php)脚本,脚本返回您的声音流。通过这种方式,可以禁止从外部世界访问媒体,并且只有您自己的服务器端php脚本才能访问媒体


然后,为了访问媒体文件,用户需要知道您现有的令牌或您的交换协议,这样可以消除随机用户随意访问您的媒体。但是,正如您之前所知,可能没有办法保护您免受“受过教育的用户”的伤害。

一种可能是:

  • 在下载文件夹上添加一个apacherewrite指令,将所有请求路由到php脚本,而不是将请求的文件作为参数
  • 在应用程序中创建这个脚本(比如sound.php),它将该文件路径作为get参数。此脚本可以输出正确的http头,以指示数据类型为wav或您想要的任何类型。然后检查一些cookie或令牌或类似内容,仅当用户有效时才直接输出受限文件的内容(请参阅)

  • 如果您希望用户能够播放音频,那么他们需要有某种方式来访问它。阻止访问也会阻止他们播放。您可以实现某种形式的DRM,但即使如此,任何计算机可以播放的内容,都可以由精明的用户以某种方式保存,即使只是将音频输出录制到mp3