我打算使用 .htaccess 密码保护我正在编写的 php 脚本的目录,因为我不相信我的 PHP 技能可以创建安全登录,但我发现你不能使用 AuthUserFile 的相对路径,我不能概括这一点。
如果您能指导我使用安全的 PHP 登录脚本来密码保护目录,我将不胜感激。谢谢。
我打算使用 .htaccess 密码保护我正在编写的 php 脚本的目录,因为我不相信我的 PHP 技能可以创建安全登录,但我发现你不能使用 AuthUserFile 的相对路径,我不能概括这一点。
如果您能指导我使用安全的 PHP 登录脚本来密码保护目录,我将不胜感激。谢谢。
您可以做的一件事是将所有“秘密”文件保存在服务器 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"
. 此外,您可能希望确保在上面的示例中发送正确的标头,为了清楚起见,我省略了它。
您可以使用 AuthUserFile 的绝对路径,并安排将该文件放在 Web 服务器无法访问的位置。我已经这样做了很多年了。工作正常。