Php 我的持久登录方法安全吗?
我非常坚持用合理的安全方法在登录系统中实现“记住我”功能。以下是我目前的方法,如果它合理且安全,请建议我: 日志记录:Php 我的持久登录方法安全吗?,php,Php,我非常坚持用合理的安全方法在登录系统中实现“记住我”功能。以下是我目前的方法,如果它合理且安全,请建议我: 日志记录: 用户提供用于登录的电子邮件和密码(两者均有效)。。通过比较提供的电子邮件,从DB表用户获取用户\u id 生成2个随机数散列字符串:key1、key2并存储在cookie中。在DB Table COOKIES中,将key1、key2与用户id一起存储 检查登录名: 如果key1和key2都存在cookie,则验证DB Table cookies中的两个键(如果存在带有key1和
感谢您的意见。考虑一下:添加第二个cookie如何使能够窃取任意cookie的用户更难作为该用户登录
没有。你必须把它和用户可以提供的东西联系起来,但不能是同一件东西。若你们能把它和IP地址联系起来,那个就太好了。如果不是,考虑使用该第一密钥作为HMAC或其他东西来散列用户代理+用户ID。我自己还在尝试设计一个安全的登录系统,所以我可以告诉你什么肯定不起作用——这就是其中之一。Jay-这是昨天的同一个线程: 答案仍然是一样的,也就是说SSL是确保人们无法嗅到您的纯文本cookie的唯一方法。如果您做出判断,表示您愿意接受cookie可能被拦截的风险,那么您的方法很好(但比必要的更复杂)
假设您已经得出结论,SSL不是您要使用的方法,我不确定您认为拥有两个单独的cookie比一个cookie有什么好处。您的方案基于cookie盗窃妄想症。偷饼干的方法实际上只有三种:
你不需要两块自己的饼干。您只需要会话cookie和“记住我”cookie,顺便说一句,您可以将其存储在多对一表中。这防止了用户和记忆Mes之间的强制一对一关系。不要绑定到IP地址。这将使你的网站对任何坐在NAT(或在很多情况下是aol)后面的人毫无用处 只有当一个cookie是接收另一个cookie的先决条件时,多个cookie才真正有用 在网站需要登录的情况下,可以生成并分配安全会话cookie,然后在后续页面加载时重新生成该cookie(不可能对不在会话中保持相同会话状态标识符的站点执行会话固定) 如果网站现在提示用户进行某种签出过程,那么您可能希望实现第二个cookie作为安全令牌,该令牌以某种方式链接到第一个cookie。这两种cookie都成为通过站点进行交易的先决条件,因此很难确定
最后,您可能希望在$\u会话超级全局中执行此链接。如果你的网站有合理的流量,那么在数据库中这样做的成本会很高。这意味着每次需要操纵、启动或停止用户会话时,都需要数据库连接和任意数量的查询/删除/插入/更新。这是不可扩展的。只有一件事:谣传某些用户的IP地址在页面请求之间会发生变化。感谢您的回复。添加第二个cookie不会使窃取变得困难,但是它将允许在多个浏览器/PC上记住登录。例如,如果cookie中存储了一个用户id和一个密钥,我将重新生成密钥并在DB中更新。在这种情况下,用户在其他浏览器中的cookie将无法工作。@sdleihsirhc这就是为什么我说如果可以的话@您可以通过允许用户登录两次(cookie表中有两个单独的条目)来应对这种情况。