如何保护文件不被直接下载?

时间:2013-01-05 16:17:04

标签: file download

我想保护服务器中的某些文件免遭下载,但我的网站需要访问它们。我想保护一些字幕文件,这些文件需要网站访问,但我不希望任何人下载它们。该网站是托管的。

例如,某些网站使用一些与用户,视频和IP相关的奇怪字符串。可以在我的案例中使用这样的东西。

http://www11.some-site.com:182/d/qygiatnqvsulzrqmk7n6nbhddbcscvyguy4auc3fn4nvf23jp64tjcpa/File-needed.mp4?start=0

2 个答案:

答案 0 :(得分:9)

如果您使用 Apache ,则必须在.htaccess文件中使用重写规则。如果您使用的是其他HTTP Server品牌,则应使用与此处显示的逻辑相同的逻辑,因此请检查您的HTTP服务器手册。

<强>说明:

当您键入www.me.com/index.php时,PHP系统会将您使用的echo命令生成的内容放入代码中。

当您输入www.me.com/myfiles/iou345yo13i2u4ybo34ybu3/passwords.txt时,您的服务器会将文件内容放入客户端浏览器,这将要求您将其作为文件下载或显示为页面,具体取决于文件扩展名。

现在,如果你在.htaccess文件中执行类似的操作:

 RewriteEngine On
 RewriteRule ^myfiles/([^/]*)^.pdf$ /index.php?file=$1& [L]
 # avoit direct access to your server directories file listing
 Options All -Indexes

您将输入www.me.com/myfiles/file123.pdf,但服务器将执行index.php,文件名作为“file”参数的内容,并且在代码中,您将能够检查用于查看用户是否具有下载此文件的权限的会话。

如果用户具有授权,则使用readfile()函数将文件发送给用户,并且他将无法识别它来自何处(我的意思是真实路径)。

请看这里如何做到这一点:

PHP - send file to user

答案 1 :(得分:-4)

更改内容中的644权限。