我已经创建了一个登录页面,并且正在使用Cookies。下面是登录页面的代码:
寄存器<?php
session_start();
if(isset($_POST['submitted'])){
$errors = array();
$mysqli = new mysqli('localhost', 'db123', 'db123', 'db123');
$username = $_POST['username'];
$result = $mysqli->query("SELECT * FROM registered_users WHERE phone_number = '$username'");
$data = mysqli_fetch_assoc($result);
if($result->num_rows == 0) {
echo 'Username Not Found!';
} elseif($data['otp_verified'] === 'false'){
echo 'OTP Not Verified, Click Here To Verify Your Number';
}
else{
$encryptpass=md5($_POST['password']);
$cookie_username = $_POST['username'];
if($encryptpass == $data['password']){
echo 'Login Is Verified';
$Month = 86400 + time();
setcookie('user', $cookie_username, $Month);
header("location:dashboard.php");
}
else{
echo 'Login/Password Incorrect :(';
}
}
$mysqli->close();
}
?>
最后,这是dashboard.php和所有其他受限制页面的代码:
<?php
session_start();
if(!isset($_COOKIE['user']))
{
header("location:index.php");
die();
}
?>
我的问题: 1.此登录系统的安全性如何? 2.我该如何改善? 在此先感谢:)
答案 0 :(得分:1)
以下是问题/解决方案的详尽列表:
md5()
进行密码加密。phone_number
。那么是哪一个呢?它可以是用户名或电话号码,不能同时使用。即使您使用电话号码作为用户名,也请称呼他们为真实姓名。 $errors = array();
不在任何地方使用。您不检查new mysqli()
的结果,连接可能会失败。 $mysqli->query()
也是如此。$result->close();
释放查询结果呢?要么两者都做,要么不做。安全性是一个困难的话题,要实现正确性确实很困难,今天可能好事,明天可能坏事。
答案 1 :(得分:0)
非常不安全