您是否知道要求用户输入指定的密码才能查看您的网站?像这个网站,例如Click。我以为它是.htaccess,但我不想保护任何目录。我只是希望我的朋友能够登录我的网站,而无需为安全问题更改我的目录名称。
答案 0 :(得分: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
答案 1 :(得分:0)
它通常被称为“登录系统”,它通常还需要一个用户名(尽管不在你的例子中)。 .htaccess
与它无关,它应该用PHP或任何其他脚本语言完成。
登录系统通常需要一些输入验证和数据库技能。如果你不拥有它们,我强烈建议你学习一些关于PHP,XSS,Sql Injection,Mysql和PDO的东西。
答案 2 :(得分: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的表,其中至少包含一个用户列和一个密码列。很容易弄清楚这个代码,这绝对不是唯一的方法!然而,这是一种体面的方式,因为它包含基本必需品(您可以在其他地方阅读),如输入卫生。
祝你好运!这确实是一个在计算机安全中非常重要的大问题。事实上,它有一个十亿美元的问题:“我如何让好人进入,但让坏人出局?”