使用Apache htaccess加密保护文件

介绍

很多的网站都在apche服务器上。apche提供了很多有用的功能。它允许我们通过密码加密访问一些文件。也就是说如果不知道密码,不能访问这些页面。这个功能十分简单,但很有用

.htaccess

这里有一个简单的例子。他为我们提供了一些web的访问信息:

order allow,deny
allow from all

require valid-user

Authname "Password access required."

Authtype Basic

AuthUserFile /var/www/vhosts/idrsolutions.com/files/Cust/.htpasswd

这个配置做了两件事。首先,它定义了web的访问规则。定义了文件夹只允许通过登录密码访问。其次,它定义了一个目录 /var/www/vhosts/idrsolutions.com/files/Cust/.htpasswd 这个目录支持为了区分htaccess的管理文件。
为了使用这个功能,你需要知道服务器与你网站相对应的路径。在我们的系统中。apache映射我们的网站,http://www.xxku.net到一个实际路径, /var/www/vhosts/xxku.net/ 下,所以http://www.xxku.net下的文件将会被要求密码访问。

.htpasswd

此文件中包含登录名和登录密码。如下: loginName: password (encrypted). 我们来添加一行记录,来测试我们的文件保护:

mark:$6$7X9OefNE$3JxPhSS6gDWew1QZAJqS2JlUNt2Ly/r7uIMKpRkc1dsgRpaEEeYsiTYKDuk6.c9XjIFEZxXdgGTtQNhur2KyW/
现在当我们访问这个文件夹的时候会弹出密码框提示我们用于输入来访问页面。如果没有密码,我们将无法访问 我们可以通过php脚本来生成加密的密码:
<?php
$ht_pass = '';
$pass = '';
$usr = '';

if (isset($_POST['password']))
if($_POST['password']!= "" AND $_POST['user']!= "" ) {
    $usr = $_POST['user'];
    $pass = $_POST['password'];
    $ht_pass = crypt($pass);
}
print "&lt;html&gt;&lt;head&gt;&lt;title&gt;Password Encryption&lt;/title&gt;&lt;/head&gt;&lt;body&gt;
&lt;form method=post action='htpass.php'&gt;
&lt;font size=5&gt;&lt;b&gt;.htpasswd File Password Encryption&lt;/b&gt;&lt;/font&gt;
&lt;br&gt;&lt;br&gt;Enter Username&lt;br&gt;
&lt;input name=user value=$usr size=20&gt;
&lt;br&gt;&lt;br&gt;Enter Password&lt;br&gt;
&lt;input name=password value=$pass size=20&gt;
&lt;br&gt;&lt;br&gt;&lt;input type=submit name=submit value='Encrypt Now'&gt;
";
if (isset($_POST['password']))
    if($_POST['password'] != "" AND $_POST['user'] != "" ) {
        print "&lt;br&gt;&lt;br&gt;.htpasswd File Code&lt;br&gt;$usr:$ht_pass";
    }
print "&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;";
?&gt;

可以直接丢到php服务器运行。

最后

你可以使用这个简单的方法控制你的网站访问。如果想了解更多详细信息,可以到apache的[weblink url="http://httpd.apache.org/docs/2.2/howto/auth.html"]官方网站[/weblink]上看一下

你可能感兴趣的:(apache,htaccess)