如何防止 url 强制访问文件

how to prevent url force access to files

上传文件到服务器后,我将文件路径存储在数据库中。

http:///localhost/ramseyer/apps/uploads/-d10ddbe8164659168192848723610514347.docx

由于我正在构建的平台具有用户访问级别,我意识到即使用户未经过授权登录,用户仍然可以访问该文件,前提是他们以某种方式了解 URL .

我看了很多关于路径遍历的文章,但没有找到答案。

有没有办法禁止试图在地址栏中输入文件 URL 只是为了访问该文件的用户?就像您禁止用户使用 htaccess 访问目录一样?

您可以像这样使用 RewriteRule:

RewriteRule ^(.*)\.(pdf|docx)$ download.php?file=&ext=

请查看此处的文档:https://httpd.apache.org/docs/current/mod/mod_rewrite.html

在下载文件中,您应该先检查用户凭据,然后输出文件内容 + headers.

// check credentials...

$filename = $_GET['file'] . '.' . $_GET['ext'];
$filename_url = $path_to_file . '/' . $filename;

header('Content-Disposition: attachment; filename="' . $filename . '"');
header("Content-Type: text/" . $_GET['ext']);
header("Content-Length: " . filesize($filename_url));

echo file_get_contents($filename_url);