我在Apache服务器上的目录中有几个文件,可以通过普通URL访问,并且可以公开下载。我知道我可以通过Apache htaccess文件保护这个文件夹,但我希望在用户点击链接时自动发送用户名和密码。
我知道有一些基本的HTTP身份验证方法可用于传输用户名和密码,但我听说这些方法不是很安全,所以我想知道是否还有其他方法可以推荐?
通过点击链接传输的任何用户名或密码都将通过HTTPS。
答案 0 :(得分:1)
您可以使用服务器端语言,并以这种方式存储信息/控制访问权限。您不需要在该方向上使用.htaccess。
安全性说,在我看来,这是最好的方法,因为你在后端验证了所有内容。
更新代码:
<?php
# Wrap this in your credentials -- #
$directory_path = $_SERVER['DOCUMENT_ROOT'] . "/directory/path/here/";
$file_path = $directory_path . $_GET['downloadfile'];
if ($file_exists = fopen ($file_path, "r"))
{
$file_size = filesize($file_path);
$file_parts = pathinfo($file_path);
$file_extenion = strtolower($file_parts["extension"]);
header("Content-type: application/octet-stream");
header("Content-Disposition: filename=\"".$file_parts["basename"]."\"");
header("Content-length: $file_size");
header("Cache-control: private"); //use this to open files directly
while(!feof($file_exists))
{
$buffer = fread($file_exists, 2048);
echo $buffer;
}
}
fclose ($file_exists);
exit;
# -- End credential wrap -- #
?>
然后您可以使用download.php?downloadfile=something.jpg
您必须为您的文件添加适当的标头/ mime类型并将其包装在您的凭证验证中,但这应该适用于您。
如果您有疑问,请告诉我。