一个安全的、比普通登录更好的登录,并检查用户是否是登录脚本。PHP/MYSQL代码,web开发
验证用户是否登录的所有files.php顶部的php脚本:一个安全的、比普通登录更好的登录,并检查用户是否是登录脚本。PHP/MYSQL代码,web开发,php,mysql,security,session,login,Php,Mysql,Security,Session,Login,验证用户是否登录的所有files.php顶部的php脚本: form submit { email|password } php filter/check { mysql_real_escape_string etc... } php set/login.php { $hash_logged = sha1(rand(100000,999999).$_SERVER["REMOTE_ADDR"].time()); $_SESSION["hl"] = $hash_logged;
form submit { email|password }
php filter/check { mysql_real_escape_string etc... }
php set/login.php {
$hash_logged = sha1(rand(100000,999999).$_SERVER["REMOTE_ADDR"].time());
$_SESSION["hl"] = $hash_logged;
mysql_query("UPDATE `users` SET `hash_logged`='".$hash_logged."' WHERE
`email`='".$emailLogin."'")or die(mysql_error());
setcookie("hlc", sha1($emailLogin."longstringtoguess"), time() + 600);
}
logout.php
会话销毁/取消设置
标题位置:index.php
这种方法足够安全吗?
你是怎么做的
谢谢这方面的一个问题是,用户希望从两个设备(两个不同的IP地址之前)或那些IP地址可能发生变化的连接设备(cuch作为移动/拨号)进行连接。理想情况下,您应该有一个记录哈希id和用户id的“sessions”表,然后用户连接到一个“session”,您就知道从该表连接的是哪个用户 对于DB条目,鼓励使用PDO。一开始很吓人,但很有道理,很快就变成了第二天性(“容易”) 如果需要,您还可以确保会话“过期” 您的代码可能会被窃取cookie和欺骗远程地址的人使用,或者如果有人知道电子邮件地址并可以破解密钥,但在大多数情况下,这就足够了。您可以添加额外的投影,例如针对会话存储用户_代理(同样是欺骗),或者向哈希(旋转密钥)添加更多内容,等等,以使其难以破解 这种方法足够安全吗?你是怎么做的
set/login.php
中的$emailLogin
进行SQL注入。我更喜欢使用事先准备好的声明,通过session\u start()
,而不是试图构建一个看似安全的随机值。如果我需要直接创建随机性,我会使用random\u bytes()
==
来比较字符串。
- 我使用
hash_equals()
- 有问题的行:
if(sha1($row[“email”].“longstringtoguess”)=$ext\u cookie)
不再支持use PDO mysql_函数
if(isset($_SESSION["hl"], $_COOKIE["hlc"]))
{
$ext_hl =$_SESSION["hl"];
$ext_cookie = $_COOKIE["hlc"];
if(empty($ext_hl)) { header("location: logout.php"); exit(); }
if(empty($ext_cookie)) { header("location: logout.php"); exit(); }
$mysqlQ = mysql_query("SELECT `id`, `username`, `email`, `password` FROM `users`
WHERE `hash_logged`='".$ext_hl."'")or die(mysql_error());
if(mysql_num_rows($mysqlQ) == 1)
{
$row = mysql_fetch_array($mysqlQ);
if(sha1($row["email"]."longstringtoguess") == $ext_cookie)
{
$logged = "yes";
}
else {
header("location: logout.php");
exit();
}
}
else { header("location: logout.php"); exit(); }
}