没有.htaccess的安全目录密码保护

时间:2009-05-31 20:30:06

标签: php directory security password-protection

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

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

2 个答案:

答案 0 :(得分: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 - 参数进行操作并传递类似"../../../etc/passwd"的内容。此外,您可能希望确保在上面的示例中发送正确的标题,为了清楚起见,我省略了它。

答案 1 :(得分:0)

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