我打算使用.htaccess密码保护我正在编写的php脚本的目录,因为我不相信我的PHP技能来创建安全登录,但我发现你不能使用AuthUserFile的相对路径和我无法概括这一点。
如果您可以指导我使用安全的PHP登录脚本来密码保护目录,我将非常感激。感谢。
答案 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服务器无法访问的位置。我已经做了很多年了。工作正常。