-1

你们知道要求用户输入指定密码才能查看您的网站的方法吗?喜欢这个网站,例如Click。我在想它是.htaccess,但我不想保护任何目录。我只是希望我的朋友能够登录到我的站点,而不必出于安全问题更改我的目录名称。

4

3 回答 3

2

Apache htaccess 听起来像你需要的。您链接到的站点有一个定制的站点登录,可以用 PHP 或任何站点编码的方式编写。

设置 Apache 来执行此操作很简单,首先使用 htpasswd 命令创建密码:

    htpasswd -c .htpasswd dave

然后将其放入 .htaccess 文件中:

    AuthUserFile /full/path/to/.htpasswd
    AuthType Basic
    AuthName "My Secret Folder"
    Require valid-user
于 2012-11-18T02:27:52.903 回答
0

它通常称为“登录系统”,它通常还需要一个用户名(尽管在您的示例中没有)。.htaccess与它无关,它应该用 PHP 或任何其他脚本语言来完成。

登录系统通常需要一些输入验证和数据库技能。如果你不拥有它们,我强烈建议你学习一些关于 PHP、XSS、Sql Injection、Mysql 和 PDO 的知识。

于 2012-11-18T02:27:32.177 回答
0

通常这是通过服务器端脚本和数据库来完成的。无法使用Javascript,因为无论您对代码进行多少混淆,任何人都可以右键单击“查看源代码”来找出您的密码。我看到你标记了 php。在php中,它相当简单。设置一个带有用户名和密码框的 HTML 表单(通过 POST,而不是 GET!,否则密码将显示在浏览历史记录和 url 栏中)。示例表单如下所示:

    <html>
    <body>
    <form action="login.php" method="post">
        Enter your username: <input type="text" name="user" /> <br />
        Enter your password: <input type="text" name="pass" /> <br />
        <input type="submit" value="Login" />
    </form>
    </body>
    </html>

然后在 login.php 中:

    <?php
         session_start();

         $db = mysqli_connect("server","db_user","db_pass","database_name");
         $stmt = $db -> prepare("SELECT pass FROM users WHERE username=?");
         $stmt -> bind_param("s",$_POST['user']);
         $stmt -> execute();
         $stmt -> bind_result($result);
         if ($_POST['pass']==$result)
         {
              $_SESSION['auth'] = "yes";
              header("Location: index.php");
         }
         else
         {
               die("Authentication rejected!");
         }
    ?>

然后您需要做的就是将以下代码放在您想要“密码保护”的所有文件的开头:

    <?php
         session_start();
         if (isset($_SESSION['auth']))
         {
              if ($_SESSION['auth']!="yes")
              {
                  header("Location: login.php");
              }
         }
         else
         {
              header("Location: login.php");
         }
    ?>

这假设您有一个 MySQL 数据库(免费且易于安装),其中包含一个名为 users 的表,其中至少包含一个用户列和一个密码列。很容易找出这段代码,而且这绝对不是唯一的方法!但是,这是一种不错的方式,因为它包含基本必需品(您可以在其他地方阅读),例如输入卫生。

祝你好运!这确实是一个巨大的问题,在计算机安全中极为重要。事实上,这是一个十亿美元的问题:“我如何让好人进来,而把坏人拒之门外?”

于 2012-11-18T02:35:39.473 回答