代码之家  ›  专栏  ›  技术社区  ›  tom

不带.htaccess的安全目录密码保护

  •  0
  • tom  · 技术社区  · 17 年前

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

    如果你能指导我使用一个安全的PHP登录脚本来密码保护一个目录,我将非常感谢。谢谢。

    2 回复  |  直到 17 年前
        1
  •  1
  •   n3rd    17 年前

    您可以做的一件事是将所有“秘密”文件保存在服务器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" .另外,您可能希望确保在上面的示例中发送正确的头,出于清晰的原因,我省略了这一点。

        2
  •  0
  •   Dave W. Smith    17 年前

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