我正在考虑做一个非常基本的身份验证脚本,如下所示:
<?php
// admin.php
session_start();
if($_GET['login'] == 'adminLoginWord')
{
$_SESSION['auth'] = true;
}
if($_SESSION['auth'])
{
// code to show Admin control panel
}
else
{
echo 'Please login.';
}
因此,要登录,需要有人知道如何导航到URL
admin.php?login=adminLoginWord
这是一种安全的身份验证方式吗?
它根本不安全,你会把"密码"留在计算机的历史记录中,它很容易被任何人嗅探。。。etc
也就是说,安全总是取决于应用程序,但如果您想要更安全的方法,请使用POST变量并进行比较,如下所示:
if($_POST['pass'] == 'password123'){
echo 'Login OK';
}
(这仍然不是最好的方法,但它比GET变量更好)
在这种情况下,我只是太胖了,使它比需要的更复杂。
.htaccess文件已经足够了。。。呜呜!
不,它不安全。您可以使用sha1散列您的特殊登录,并测试该sha1是否等于"adminLoginWord"的sha1。
此外,在您的情况下,您应该使用POST。
您必须注意,如果使用此系统,您的密码将存储在任何浏览器保存历史记录中。甚至可以将其添加为书签。。。
不,它不安全。
您应该使用POST并同时使用HTTPS
我理解你想要做简单的基本身份验证,这里的每个人都有有效的安全建议。如果你真的不介意安全性,但希望它比在URL中传递凭据更安全,你可以尝试这样的方法(当然,你可以在表单/页面区域添加更多的HTML):
/* admin.php */
<?php
$username = "adminLoginWord";
$password = "adminLoginWordPassword";
$msg = "";
if ($_POST['mySiteUsername'] == $username && $_POST['mySitePassword'] == $password){
$_SESSION['auth'] = true;
} else {
$msg = "Invalid Username/Password Combination";
}
if(!$_SESSION['auto']){
$html = "<html>
<body>
<div class='error'>$msg</div>
<form action='admin.php' method='POST'>
<label for='mySiteUsername'>Username:</label>
<input type='text' name='mySiteUsername' />
<label for='mySitePassword'>Password:</label>
<input type='password' name='mySitePassword' />
</form>
</body>
</html>";
} else {
// Authorized
}
?>
加密您的密码,然后通过GET或使用POST 发送