当用户想从我的网站下载文件时,用户必须单击如下所示的链接
https://www.example.com/download.php?aaa=111&bbb=222
下载.php
<?PHP
session_start();
include("connect.php");
$aaa = mysql_real_escape_string($_GET[aaa]);
$bbb = mysql_real_escape_string($_GET[bbb]);
if(($aaa = '111')&($bbb = '222')) // this line is example for ask stackoverflow //
{
$filePath_try_to_download = 'attachments_files/test.pdf';
if(file_exists($filePath_try_to_download))
{
$fileSize = filesize($filePath_try_to_download);
$fileName = "test.pdf";
header("Cache-Control: private");
header("Content-Type: application/stream");
header("Content-Length: ".$fileSize);
header("Content-Disposition: attachment; filename=".$fileName);
// Output file.
readfile ($filePath_try_to_download);
exit();
}
}
?>
我想知道用户何时从此链接下载文件https://www.example.com/download.php?aaa=111&bbb=222
用户可以在服务器上获取我的文件路径(attachments_files/test.pdf
)。如果用户可以获取我的文件路径,我该如何隐藏它?( file in this dir is very importance
)
由于我从手机上发布评论,他们无法真正解释太多,所以这里是你的答案。
我想知道用户何时从此链接下载文件 https://www.example.com/download.php?aaa=111&bbb=222 用户可以在服务器上获取我的文件路径(attachments_files/test.pdf)。
不可以,用户无法看到您通过 readfile()
读取的文件路径。他们根本无法找到该文件的位置。
如果您想消除人们猜测文件路径的任何机会,只需将这些文件放在您的 Web 根文件夹之外,然后从那里readfile()
它们。
$filePath_try_to_download = 'attachments_files/test.pdf';
该路径仅对您的PHP代码所知,该代码对用户不可见,因此他们不知道您从哪里读取他们正在下载的文件,只需消除猜测的机会:)
显然,您必须保护对此URL的访问https://www.example.com/download.php?aaa=111&bbb=222
否则有什么意义!
No.用户无法获取文件路径。他只得到PHP脚本输出的内容。
您可以执行此操作,用户只能获得"Hello"字符串。因此,PHP脚本的角色决定了用户可以获取哪些内容。
<?php
echo "Hello";
?>