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

use*_*676 3 file download

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

例如,一些站点使用一些与用户,视频和IP连接的奇怪字符串.可以在我的情况下使用这样的东西.

http://www11.some-site.com:182/d/qygiatnqvsulzrqmk7n6nbhddbcscvyguy4auc3fn4nvf23jp64tjcpa/File-needed.mp4?start=0
Run Code Online (Sandbox Code Playgroud)

Ple*_*rds 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
Run Code Online (Sandbox Code Playgroud)

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

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

看看这里怎么做:

PHP - 将文件发送给用户