2011-03-08 76 views

回答

13

这是一个简单的两步过程

在你的.htaccess把

AuthType Basic 
AuthName "restricted area" 
AuthUserFile /path/to/the/directory/you/are/protecting/.htpasswd 
require valid-user 

使用http://www.htaccesstools.com/htpasswd-generator/或命令行来生成密码 并把它放在htpasswd的

注1:如果您使用的是cPanel,则应在安全部分配置“密码保护目录”

编辑:如果这没有工作,那么propably你需要的http.conf接着是Apache的重新启动做AllowOverride All到的.htaccess的目录(或至少到以前的)

<Directory /path/to/the/directory/of/htaccess> 
     Options Indexes FollowSymLinks MultiViews 
     AllowOverride All 
</Directory> 
+1

所以我将'.htaccess'文件和'.htpasswd'文件放在sudomain的目录中?或者我把'.htpasswd'文件放在我想要保护的目录和子域目录中的'.htaccess'中? – Odyss3us 2011-03-08 08:43:57

+0

@ user270311您需要将.htaccess放在您需要保护的目录中。所以这里在子域的目录中。和.htpasswd在具有适当权限的任何地方,在AuthUserFile – Mahesh 2011-03-08 11:42:22

+4

中指定适当的权限我将以不同的方式制定:将.htpasswd放入不以任何方式暴露给Web的目录(受保护或不受保护),但对Apache可用。 – 2014-05-14 18:48:15

1

您可能想要使用 mod_auth_digest模块。 Apache提供了一个非常好的 guide来使用全方位的认证和授权模块。

+1

检查了这一点:“这个模块实现HTTP摘要认证(RFC2617),并提供了一个mod_auth_basic替代了密码不以明文方式传输的情况,但与基本认证相比,这不会带来显着的安全优势,另一方面,服务器上的密码存储在摘要式身份验证中的安全性远远低于基本身份验证。疗法因此,使用基本身份验证和使用mod_ssl加密整个连接是一个更好的选择。“ – biocyberman 2017-02-24 10:08:20

+0

@biocyberman,感谢您的纠正。我会留下这个帖子作为对未来的警告。 – sarnold 2017-02-27 06:48:27

2

要密码保护Apache提供的目录,您需要在要保护的目录中有一个.htaccess文件以及一个.htpasswd文件,该文件可以位于系统上Apache用户可以访问的任何位置(但将其放置在明智和私密的地方)。您很可能不想将.htpasswd放在与.htaccess相同的文件夹中。

.htaccess文件可能已经存在。如果没有,创建它。然后插入:

AuthType Basic 
AuthName "Your authorization required message." 
AuthUserFile /path/to/.htpasswd 
require valid-user 

然后使用所需的任何用户名和密码创建.htpasswd文件。密码应该被加密。如果您在Linux服务器上,则可以使用htpasswd命令来为您加密密码。下面是该命令如何可以用于此:

htpasswd -b /path/to/password/file username password

1

你需要生成用于认证的密码(用户名+密码)字符串,它写入一个文件,并将其放置要限制子目录中访问。

字符串的样子,

username:hashkey 
  • 您可以使用HTTP password generator tool做到这一点。
  • 将您从上述网站获得的字符串复制并粘贴到您网站的webroot外部任何位置的新文件(.htpasswd)(最好保留在用户主目录内的任何位置)。
  • 在.htaccess文件中添加以下行。
AuthType Basic 
AuthName "Require Authentication" 
AuthUserFile [PATH_TO_FILE]/.htpasswd 
Require valid-user 
  • 如果密码没有被触发,检查.htaccess文件的权限。

  • 如果身份验证失败,请检查指定位置是否存在.htpasswd文件。 (请确保您的用户帐户在.htpasswd文件上具有足够的权限来读取)

  • 您不需要重新启动服务器即可实现此目的。

如果您有任何疑问,请让我知道。

0

要建立正确的密码,您可以创建一个PHP文件,并在本地运行(在您的计算机上,而不是在Web服务器上)具有以下内容:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
</head> 
<body> 
<form method="post" accept-charset="utf-8"> 
    <input type="text" name="clear"/> 
    <input type="submit" name="submit" value="generate" /> 
</form> 

<?php 
header("Content-Type: text/html; charset=utf-8"); 

if (isset($_POST['clear']) && $_POST['clear'] != '') { 
    $cl = $_POST['clear']; 
    $pw = crypt($cl, base64_encode($cl)); 
    echo $pw; 
} 
?> 
</body> 
</html> 

我通常把我的htpasswd文件中一个名为/ htpasswd/webcontent目录之外的目录,例如AuthUserFile /home/www/usr122/files/htpasswd/.sportsbar_reports_htpasswd(而不是webcontent文件夹中的/home/www/usr122/html/htpasswd/),并将.htpasswd文件重命名为它的用途,例如.sportsbar_reports_htpasswd

密码文件本身应该像

testusername:dGATwCk0tMgfM 

,其中用户名是testusername,密码为testuserpassword

相关问题