PHP安全的方式来存储cookie数据并与mysql条目进行比较?

时间:2017-07-15 10:35:27

标签: mysql cookies

我有一个登录系统,我希望人们能够保持登录状态。我这样做的方式如下。当用户登录并单击“记住我”时,将创建一个cookie。 Cookie包含以下数据。

email:::randomString

“:::”只是电子邮件和字符串之间的分隔符。一个例子如下:

johndow@gmail.com ::: EN8borW29qZMMJU8CNKivD91NFa3h5

字符串是随机生成的,不基于用户输入的任何内容。然后使用bcrypt对整个数据进行加密并存储在cookie中。 然后将该cookie上相同的数据副本存储在MySQL表条目中。当用户在另一个会话期间加载页面时,cookie被读取并解密。然后扫描该表以查找具有该电子邮件及其中的该字符串的相同副本。如果是,则用户自动登录。由于以下原因,我不确定这是否是一种安全的方法。有人可以从该cookie中复制数据,并在PC上创建一个具有确切数据的新数据。当他们加载页面时,脚本会读取他们的cookie并检查数据库是否找到匹配项,然后登录用户。

如何改进此方法或完全使用新方法?

1 个答案:

答案 0 :(得分:0)

  1. 在db表中添加expiration字段并检查传入的Cookie,以便您可以使用其他随机值重新创建Cookie,并强制攻击者尝试新的Cookie窃取或被阻止,
  2. 仅限您的Cookie
  3. 在您的表中存储浏览器-os信息,并检查您的客户端请求,如果不匹配请求重新输入密码(您确实为每个用户附加了密码字段,对吧?),
  4. 上一步骤3意味着一个'会话'表,以便我们可以跟踪谁登录和谁没有(我怀疑你的描述中没有无密码系统,不是一个好主意,所以观察会话是必要的),
  5. 在登录期间及之后执行https协议。
  6. 可替换地, 在github中搜索php登录系统,但希望能根据你的需求进行大量定制。

    最近,我做了很多工作来定制这样一个系统,由于与业务战略有关的原因我到目前为止没有发布,但我向你保证,有很多工作需要构建和保护这样的系统!

    作为奖励,我只发布一个功能图来理解我所说的复杂性,以及在构建软件时使用文字处理软件制作的简单图表的有用性。这将是拯救你未来的生活! enter image description here