如何防止 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);
上传文件到服务器后,我将文件路径存储在数据库中。
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);