我可以指定用户名和密码来通过HTTP访问文件吗?

时间:2011-02-22 16:33:08

标签: html apache http

我在Apache服务器上的目录中有几个文件,可以通过普通URL访问,并且可以公开下载。我知道我可以通过Apache htaccess文件保护这个文件夹,但我希望在用户点击链接时自动发送用户名和密码。

我知道有一些基本的HTTP身份验证方法可用于传输用户名和密码,但我听说这些方法不是很安全,所以我想知道是否还有其他方法可以推荐?

通过点击链接传输的任何用户名或密码都将通过HTTPS。

1 个答案:

答案 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类型并将其包装在您的凭证验证中,但这应该适用于您。

如果您有疑问,请告诉我。

相关问题