你们知道要求用户输入指定密码才能查看您的网站的方法吗?喜欢这个网站,例如Click。我在想它是.htaccess,但我不想保护任何目录。我只是希望我的朋友能够登录到我的站点,而不必出于安全问题更改我的目录名称。
3 回答
Apache htaccess 听起来像你需要的。您链接到的站点有一个定制的站点登录,可以用 PHP 或任何站点编码的方式编写。
设置 Apache 来执行此操作很简单,首先使用 htpasswd 命令创建密码:
htpasswd -c .htpasswd dave
然后将其放入 .htaccess 文件中:
AuthUserFile /full/path/to/.htpasswd
AuthType Basic
AuthName "My Secret Folder"
Require valid-user
它通常称为“登录系统”,它通常还需要一个用户名(尽管在您的示例中没有)。.htaccess
与它无关,它应该用 PHP 或任何其他脚本语言来完成。
登录系统通常需要一些输入验证和数据库技能。如果你不拥有它们,我强烈建议你学习一些关于 PHP、XSS、Sql Injection、Mysql 和 PDO 的知识。
通常这是通过服务器端脚本和数据库来完成的。无法使用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 的表,其中至少包含一个用户列和一个密码列。很容易找出这段代码,而且这绝对不是唯一的方法!但是,这是一种不错的方式,因为它包含基本必需品(您可以在其他地方阅读),例如输入卫生。
祝你好运!这确实是一个巨大的问题,在计算机安全中极为重要。事实上,这是一个十亿美元的问题:“我如何让好人进来,而把坏人拒之门外?”