1

我打算使用 .htaccess 密码保护我正在编写的 php 脚本的目录,因为我不相信我的 PHP 技能可以创建安全登录,但我发现你不能使用 AuthUserFile 的相对路径,我不能概括这一点。

如果您能指导我使用安全的 PHP 登录脚本来密码保护目录,我将不胜感激。谢谢。

4

2 回答 2

1

您可以做的一件事是将所有“秘密”文件保存在服务器 webroot 之外的目录中。所有对这些文件的访问都可以通过您目录中的单个 PHP 脚本进行路由。像这样的东西:

http://www.example.com/protected-directory/access.php?file=/foo/document.doc

使用这样的目录结构:

+--+ /server_root
   |
   +--+ /web_root
   |  |
   |  +--+ /protected-directory
   |     +-- access.php
   |     +-- access-denied.html
   |
   +--+ /protected_root
      |
      +--+ /foo
         +-- document.doc

在你的access.php你会做这样的事情:

$file = $_REQUEST['file'];
if ($user->hasAccessTo($file)) {
    readfile("/server_root/protected_root/$file");
} else {
    readfile('access-denied.html');
}

现在,您必须小心,确保没有人使用您的file-parameter 并传递类似"../../../etc/passwd". 此外,您可能希望确保在上面的示例中发送正确的标头,为了清楚起见,我省略了它。

于 2009-05-31T20:48:07.447 回答
0

您可以使用 AuthUserFile 的绝对路径,并安排将该文件放在 Web 服务器无法访问的位置。我已经这样做了很多年了。工作正常。

于 2009-05-31T20:42:07.240 回答