当用户选择记住我的功能时,我将他的用户名和ID保存在cookie中。然后,当用户返回到站点时,我会检查数据库的用户名和ID,以确保用户是合法的。我接下来通过将cookie数据存储在会话变量中来登录用户。这是记住和登录用户的正确方法吗?
答案 0 :(得分:3)
Cookie不是一种非常安全的数据存储方式。 Cookie可以由用户修改,并可能导致某人“入侵”您的网站。我建议的是在cookie中存储一个字符串,它是某些东西的哈希值。还要在数据库中存储cookie中的散列字符串。这样,当用户返回到站点时,您检查cookie是否已填充,将其与数据库中的哈希值匹配,然后查找谁拥有该哈希值。如果全部有效,请将其登录。
数据库设置
secretKey PK varchar
userid (could be unique) int
validUntil int or date/time
//If userID is unique you will have to remove this row from the
// database when a new key is made for the user, This would then mean
// that a user would only be allowed to be rememberd on one computer
<强>伪代码强>
//User logs in with remember me
//set cookie to something like md5(userid,username,timestamp)
//store the md5 in the database layout
//User Returns to site
//check to see if cookie is set
//if cookie set
//find md5 in database which is logged with user id
//if found and not yet expired log in
//else show login page
//if cookie not set show login page
在有效的直到字段中,您可以将其设置为在登录后2周。一旦有效直到过去,不要让该密钥工作,并确保用户的cookie已过期。
查询以检查登录信息
SELECT * FROM rememberMe WHERE key =“// put md5 here”AND validUntil&gt;时间()
答案 1 :(得分:2)
没有
这取决于你想要获得的安全性。以下是您可以做的一些事情(部分或全部)以提高安全性:
https
传输Cookie,登录等