2009-05-31 111 views
0

我打算使用.htaccess密码保护一个php脚本的目录我正在写,因为我不相信我的PHP技能来创建一个安全的登录,但我发现你不能使用AuthUserFile的相对路径,我不能一概而论。安全的目录密码保护没有.htaccess

如果你可以指示我一个安全的PHP登录脚本密码保护一个目录,我将非常感激。谢谢。

回答

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"。另外,您可能希望确保您在上面的示例中发送了正确的标题,为了清晰起见,我省略了这些标题。

0

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

+0

事情是,如果我分发这个,我不知道用户将在哪里放置脚本或他们在什么操作系统。所以我不认为我可以使用.htaccess? – tom 2009-05-31 20:44:46