当用户想从我的网站下载文件时,用户必须点击下面的链接
https://www.example.com/download.php?aaa=111&bbb=222
的download.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
)
答案 0 :(得分:2)
由于我在手机上发表评论,他们无法解释得太多,所以这里是你的回答。
我想知道用户从此链接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代码所知,用户看不到它,因此他们不知道您从哪里读取他们正在下载的文件,只是消除了猜测机会:)
显然你必须保护对这个网址https://www.example.com/download.php?aaa=111&bbb=222
的访问权限,否则有什么意义!
答案 1 :(得分:0)
没有。用户无法获取文件路径。他只获得PHP脚本输出的内容。
您可以执行此操作,用户只能获取“Hello”字符串。因此,您的PHP脚本角色决定了用户可以获得哪些内容。
<?php
echo "Hello";
?>