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

标签 file download

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

例如,一些网站使用一些奇怪的字符串与用户、视频和 IP 相关联。可以为我的情况使用这样的东西。

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

最佳答案

如果您正在使用 Apache,您必须在您的 .htaccess 文件中使用重写规则。如果您使用的是其他 HTTP 服务器品牌,您应该使用与我将在此处展示的几乎相同的逻辑,因此在这种情况下请查看您的 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"参数的内容,在代码中,您将能够检查 session 以查看用户是否有权下载此文件。

如果用户有授权,那么你使用readfile()函数将文件发送给用户,他将无法识别文件的来源(我的意思是真实路径)。

在这里查看如何执行此操作:

PHP - send file to user

关于file - 如何保护文件不被直接下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14173675/

相关文章:

python - 如何使用python下载推送到浏览器的文件?

security - HTTPS 下载/上传

java - 我在哪里可以找到包 javax.media.opengl?

c# - 将文本数据从文件重定向到 stdin c# windows

python - 独立于操作系统的文件系统访问

c++ - Unix C++ 简单服务器问题 : sending data back to browser

php - 使用 htaccess 使 PHP 文件上传安全

c# - C#/.NET 3.5 的文件存储数据库?

swift - 需要帮助使用 AVAssetExportSession 导出音频

javascript - 使用 JQuery 将表格下载为 PNG