在选中登录表单上的复选框后,如何正确编写脚本以设置Cookie以记住用户的用户名和密码?
另外,如果可以用PHP完成,请告诉我。
答案 0 :(得分:2)
存储密码记忆内容的最佳方法是将md5哈希值与一些浏览器特定数据一起存储。例如,您存储一个字符串,如
username-4155b1b6e53ad73e06c4c58e709cdeea19915ea84de517500d9ba3280e27cf59
例如,您可以像PHP一样在PHP中生成此字符串
$string=$username.'-'.md5(substr($http_user_agent, 5, 10)) .md5($password).md5(substr($http_user_agent, 0, 10));
我们的目标是使我们的字符串足够复杂。在登录阶段,我们使用我们只知道的方法提取密码md5。
$somearray=explode('-', $string);
$username=$somearray[0];
$passwordmd5=str_replace(md5(substr($http_user_agent, 0, 10)),'',str_replace(md5(substr($http_user_agent, 5, 10)),'', $string));
现在,我们可以像这样在我们的数据库中进行比较,
select * from users where username='$username' and md5(password)='$passwordmd5';
HTTP USER AGENT内容消除了未经授权使用cookie字符串的风险。虽然未经授权的人窃取了cookie,但是他不能在其他浏览器中使用它。如果我们没有这样做,那么具有相同字符串的人可能会表现得像他有密码并且可以作为我们的真实用户登录。
答案 1 :(得分:0)
在PHP中,通过使用$_SESSION
将$_COOKIE
中的相应值复制到set_cookie
,设置包含会话信息(用户名,密码)的cookie。当用户访问页面时,首先检查是否存在$_SESSION
变量,然后检查$_COOKIE
个变量。如果$_COOKIE
变量存在但$_SESSION
变量不存在,请从$_COOKIE
复制到$_SESSION
。 (也就是说,如果用户选中该框。)
答案 2 :(得分:0)
您可以按照上述@minitech的建议进行操作。但是,将密码信息存储在cookie中并不是一个好主意。它可以很容易地从计算机中提取出来。
您最好生成一次性哈希,可用于登录一次并将其存储在cookie中。一旦它使用了它的无效。虽然它不是非常安全(尽管如此,如果您希望它更安全,请强制使用https),但它不会危及用户密码。
用户经常在多个站点上使用相同的密码。如果它在一个站点上受到攻击,则更容易进入其他站点上的用户帐户。
答案 3 :(得分:0)
$somearray = explode('-', $string);
$username = $somearray[0];
$passwordmd5 = str_replace(md5(substr($http_user_agent, 0, 10)),'',str_replace(md5(substr($http_user_agent, 5, 10)),'', $string));