2010-07-26 42 views
0

我正在创建一个基于PHP的Web应用程序,它需要使用简单的身份验证。该应用程序被安装在Web服务器上,并且仅用作Web主机/服务器的所有者,因此只有一个用户和密码。我认为创建复杂的登录系统毫无意义。我只想创建一个GUI来生成.htaccess和.htpasswd文件以使用Apache的身份验证。背后的想法是,它应该是简单的,但它变成了比我预期的更多的工作。我意识到我必须将.htpasswd文件放在安全的地方,这意味着不在可访问的Web目录中。问题在于Web服务器通常具有不同的文件系统和权限,因此我可以将它放在哪里安全?根据我所知,我能够创建一个具有“740”权限的目录,这应该是安全的。但是,这是不方便的。应用程序真的应该只限于一个文件夹,并且如果需要的话,应该只有一个.htpasswd文件。我很想将.htpasswd放在应用程序文件夹中,但我相信如果它被.htaccess文件保护,那么我不会这样做,当我尝试它时似乎会导致服务器错误。如果有人有解决方案或更好的地方放置.htpasswd文件,将不胜感激!由PHP生成的.htpasswd放在哪里?

+0

看看http://stackoverflow.com/questions/747096/ CakePHP的密码保护与 - htaccess的 - 和htpasswd的-HOWTO。 – 2010-07-26 21:27:51

+0

我知道如何htaccess和htpasswd函数,以及如何创建它们。我只是在寻找可以放置跨平台兼容和安全的.htpasswd文件的建议。 – 2010-07-26 21:36:24

回答

2

通过默认的Apache应配置不受此规则,以服务于任何.ht*文件:

<FilesMatch "^\.ht"> 
    Order allow,deny 
    Deny from all 
    Satisfy All 
</FilesMatch> 

所以它应该是安全的放置这个文件,无论你想。

如果您遇到服务器错误检查mod_auth如果编译/于Apache安装启用,如果您的虚拟主机/ Webroot公司拥有AllowOverride AuthConfig

+0

谢谢,我不知道这一点。然而关于这些错误,如果我将.htpasswd文件放在.htaccess保护的文件夹中,我只会收到它们。如果我启用了'mod_auth'并设置了'AllowOverride AuthConfig',这是否允许我这样做没有错误? – 2010-07-26 21:53:22

+0

因此,当你将.htpasswd放在其他地方(并在htaccess中指定此路径)时,它工作正常(您必须登录才能查看页面)? – 2010-07-26 22:15:31

+0

我还没有测试过,但我认为是这样,但是如果我输入了正确的用户名和密码,它就不会验证并再次登录。我的错误日志有这样的说: '原因:要求指令存在,没有权威处理程序。“这是你所指的错误? – 2010-07-26 22:31:15