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