我的网站有一个登录系统,存储在数据库中的用户的详细信息是userid(对每个用户都是唯一的, (唯一),显示名称(不唯一),密码和membersince。
现在我应该在cookie中存储什么?我正在考虑只在cookie中存储用户标识和过期日期,然后如果用户在注册后检查cookie并将他登录(这种方式看起来不正确),并重新销毁cookie如果他决定退出。
*一点解释也会非常有帮助。由于我应该在cookie中存储什么以在用户登录时实现“记住我”
回答
如果您使用只有您的应用程序知道的密钥对其进行签名,则只能将该用户标识存储在cookie中。否则,用户可以将Cookie更改为任何内容并以其他人身份登录。因此,如果您想存储用户标识,则还需要使用密钥存储用户标识的散列(理想情况下使用HMAC),并且当您要将它们登录时,计算相同的散列并将其与来自Cookie的散列进行比较。另一种解决方案是生成一个随机令牌,将其存储在数据库中并在cookie中使用。如果它足够长且随机,那么有人很难猜出另一个人的令牌。
谢谢很多人 – halocursed 2009-12-07 08:11:05
谢谢!但是,你的意思是“用户名和密钥”。如果我是一个坏人,并且将整个cookie加以压缩,并获得这个散列字符串来假装我是用户登录的,服务器是否可以知道我是错误的人? – Jaskey 2014-11-19 11:09:47
秘密密钥的要点是确保你不能像任何你想要的用户那样通过设置cookie来“登录”。在不知道密钥的情况下,您无法构建cookie。如果您为现有用户加注整个cookie,则当然可以以该用户身份登录。有几种方法可以防止这种情况的发生:1)使cookie在一段时间后过期(将时间戳编码到cookie中),2)使Cookie特定于某个IP地址(再次,在cookie中编码IP地址),3)使它特定于某个用户代理字符串(这可以很容易伪造) – 2014-11-19 18:39:34
PHP内置的会话管理,做你正在寻找什么:
http://us.php.net/manual/en/book.session.php
我不会推荐存储在cookie中的USER_ID。相反,您可以生成唯一的令牌并将该令牌与数据库中的用户相关联,然后检查每个请求上的令牌重新生成令牌。同样,这有点多余,因为会话管理已经内置到PHP中。
你能否给出一点解释。 – halocursed 2009-12-07 07:48:08
只需将cookie过期时间添加到2天或想要记住用户的天数并保存该cookie即可。
PHP'$ _SESSION为你做到这一点。如果你喜欢完全控制,你甚至可以编写自己的会话类。
一个小教程在这里找到: http://www.tizag.com/phpT/phpsessions.php
这里是一个小例子来使用MySQL来存储会话,而不是PHP的默认设置(在/ tmp目录的文件): http://www.hawkee.com/snippet/2018/
- 1. 将信息存储在cookie中以记住登录
- 2. “记住我” - cookie中保存什么? -PHP
- 3. 什么应该存储在一个登录系统的cookie中?
- 4. 我应该在“使用Facebook登录”后存储什么
- 5. Facebook JavaScript API登录:我在我自己的应用程序的用户记录中存储了什么?
- 6. 使用oAuth登录,我应该存储/使用什么来识别用户?
- 7. 是否可以使用jQuery Cookie实现“记住我”?
- 8. GWT:登录记住我
- 9. Railscast登录记住我
- 10. symfony2登录记住我
- 11. 记住我登录形式
- 12. Laravel 4:勾选“记住我”后复选框用户的登录不会在数据库中记住,只能在cookie中记住我不工作
- 13. 记住我在jsp登录页面
- 14. 登录时记住我的功能
- 15. 我应该在Zend_Db中实现缓存?
- 16. 我应该在ID登录中持久存储ID令牌吗?
- 17. Django,记住用户登录
- 18. 记住我的cookie
- 19. 我应该用什么让用户登录到我的ASP.net应用程序?
- 20. Webfilter只能在第二个响应中登录用户(记住我)
- 21. 在Rails应用程序中实现“记住我”
- 22. 在C中记住我持久Cookie#
- 23. 用户使用'记住我'登出
- 24. 实现“记住我”功能
- 25. 我应该在客户端代码中存储什么作为我的索引?
- 26. 如何在用户登录时“记住”用户-passport.js-phonegap
- 27. nodejs。什么库我应该使用会话存储在MongoDB中
- 28. Spring Security使用Ajax登录记住我
- 29. 登录表单中的“记住我”webmatrix
- 30. 在joomla中,我们如何增加“记住我”Cookie时间
好像你已经回答这个问题你自己,存储userid。 – TechTravelThink 2009-12-07 07:47:39
这不安全 - 请参阅下面的答案。 – Jon 2010-09-28 13:11:05