我试图隐藏我的产品文件的位置,所以我在购买后启动下载服务器端PHP头。是否有可能发现文件的url ?
使用以下代码
if (file_exists($_SERVER['DOCUMENT_ROOT']."/files/$file")) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
像现在一样流式传输结果,源对客户端是隐藏的。输出似乎来自php脚本,然后
浏览器可以选择是否遵循header('Location: ');
,所以是的,它们可以。
我建议将它们流式传输给用户,使用readfile();
这个问题的答案是生成一个唯一的绑定到文件的散列,并将它们存储在一个表中。然后用该哈希将用户重定向到像/download/n43j234jb3434
这样的文件。这个散列是一次性使用的。您可以使用readfile()
使用位置标头,您基本上是告诉客户端文件的位置。另一种选择是让php将文件提供给客户端,而不是重定向它们。