У меня есть веб-сайт, использующий файлы cookie для входа в систему и выхода из системы, кажется, что она работает нормально, но я уверен, что есть некоторые проблемы безопасности, о которых я не знаю.Я надеюсь на любые комментарии или идеи, которые могут сделать это более безопасным.
Логин:
if(isset($_REQUEST['email']) && isset($_REQUEST['password'])) {
if ($result = $usersqli->query("SELECT * FROM users WHERE email='".$usersqli->real_escape_string($_POST['email'])."' AND password='".$usersqli->real_escape_string($_POST['password'])."'")) {
if ($result->num_rows==1){
$row = $result->fetch_object();
$_SESSION["uid"]=$row->id;
setcookie('email', $usersqli->real_escape_string($_REQUEST['email']), time()+60*60*24*365,'/');
setcookie('password', md5($_REQUEST['password']), time()+60*60*24*365,'/');
$usersqli->query("UPDATE users SET last_login=NOW() WHERE email='".$usersqli->real_escape_string($_POST['email'])."' AND password='".$usersqli->real_escape_string($_POST['password'])."'");
header( 'Location: index.php' ) ;
}else{
header( 'Location: index.php?show=login&err=Invalid login credentials' ) ;
}
}
}
Выход:
setcookie('email','', time() - 60000);
setcookie('password', '', time() - 60000);
session_destroy();
header("Location: index.php");
Заголовок каждой страницы:
if(!$_SESSION[uid] && $_REQUEST[show]!='logout'){
if (isset($_COOKIE['email']) && isset($_COOKIE['password'])) {
if ($result = $usersqli->query("SELECT * FROM users WHERE email='".$usersqli->real_escape_string($_COOKIE['email'])."'")) {
if ($result->num_rows==1){
$row = $result->fetch_object();
if(md5($usersqli->real_escape_string($row->password))==$_COOKIE['password']){
$_SESSION["uid"]=$row->id;
}
}
}
}
}