首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择where md5 (用户识别来自“记住我”哈希)

选择where md5 (用户识别来自“记住我”哈希)
EN

Stack Overflow用户
提问于 2014-01-05 14:36:38
回答 1查看 164关注 0票数 1

我正在为一个框架构建一个用户系统插件,但是我目前设置它的方式并不满足我的需求。当选中“记住我”框时,我会创建一个cookie

代码语言:javascript
复制
setcookie('rmb', md5('salt'.$id), ...);

有几件事我不喜欢。当我从这个cookie重新创建一个会话时,我执行以下操作

代码语言:javascript
复制
$db->prepare('SELECT id FROM users WHERE md5(CONCAT("salt",id)) = ?')
   ->execute([$_COOKIE['rmb']])
   ->fetch();

这听起来不错,但如果我解释一下这个问题,这就是我得到的

效率很低,可能会运行几个小时。除了md5非常不安全之外,这个系统看起来并不可靠。你们能给我一些关于我如何从记忆-我的曲奇哈希有效和安全地识别用户的一些建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-05 14:44:51

我认为您可以创建一个challenge,客户端应该在随后的请求中将其作为cookie发送。当用户登录时:

代码语言:javascript
复制
setcookie('username', put_username_here, ...);
setcookie('challenge', long_random_char_sequence, ...); 
// UPDATE users SET challenge = ... WHERE username = ...

当用户再次连接时,如下所示:

代码语言:javascript
复制
// SELECT ... FROM users WHERE username = $_COOKIE['username'] AND challenge = $_COOKIE['challenge']

这不能编译,没有输入消毒,等等.这只是您可能尝试实现的工作流。

如果您想做得更好,请参见this

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20934801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档