php客户端cookie,关于mysql:保护PHP记得使用客户端cookie

我知道这个问题可能会被问过很多次,但是大多数建议您存储ip + username + password并对整个内容进行哈希处理并进行比较,相反,我为我的网站提出了另一种解决方案,我想这样做:

我正在使用会话存储用户名,用户ID,时区偏移量等,现在假设我们说一个用户登录并且他检查了我的记忆,我将设置会话,然后生成一个可变的唯一ID,该ID会随机存储12-13位数字ID设置此项,我将使用其唯一的ID和用户名在他的浏览器上创建一个cookie,并将其存储在我的数据库中,当他回来时,我将检查是否设置了id和用户名cookie(如果是),而不是从数据库中选择用户名,记得我其中username = cookie用户名,然后再次设置会话并将其扔到主页上,否则重定向到登录页面。

如果他注销,我将删除所有cookie,并在他选择记住并登录后更新唯一值。

这样做有什么问题吗?或更好的方法呢?我不希望将密码保存在cookie中,即使处于散列状态也是如此。或者这样做是完美的吗?

因此,据我所知,当用户登录(并希望保持永久登录)时,请执行以下操作:

创建一个随机令牌。

将随机令牌保存在该用户的用户数据库记录中(或保存在包含用户名和令牌的单独表中)。

在用户浏览器上设置包含用户名和令牌的cookie。

当用户返回并且没有活动的会话,但是确实具有上面设置的cookie时,您可以在数据库中查找其用户名。如果数据库包含该用户的"记住我"令牌,并且该令牌与cookie中的令牌匹配,则为该用户创建一个新会话。

当用户注销时,可以从其浏览器中删除cookie,也可以从数据库中删除令牌。

如果是这样,那是一个非常安全的设计,只要令牌足够长并且由安全的随机数生成器(例如Unix上的/dev/urandom)生成即可。您说令牌的长度为" 12-13位数字",相当于40位多一点。这有点偏低,我建议至少加倍。另外,您不会说如何生成令牌;仅使用PHP的rand或mt_rand是不安全的,因为它们的输出可能是可预测的。

我还建议进行两项改进:首先,在将令牌存储到数据库之前对令牌进行哈希处理(任何加密哈希函数都可以,例如具有长随机令牌的SHA-1,您不需要任何特殊的密码哈希函数,例如PBKDF2),以便设法复制数据库的攻击者不会获得所有令牌。其次,在数据库中包括令牌的到期日期,以使单个被破坏的令牌不会永远保持有效。

回答我一直在寻找的东西,很完美,这是简单的解释,顺便说一句,我正在使用mt_rand和rand来生成10位随机用户ID,因此我可以使用mt_rand,然后使用sha1哈希该值并将其存储在数据库中,并且也在cookie上...谢谢;)

散列mt_rand的输出不会使它的可预测性变差:如果可以预测散列的输入,就可以预测输出。 (这可能会使攻击者仅通过观察输出来推断状态变得更加困难,但这在很大程度上取决于散列的完成方式。)您应该使用例如openssl_random_pseudo_bytes代替。

谢谢,但是不会那么保护它,除非直到我使我的网站流行为止,直到jsut crypting mt_rand暂时可以工作为止;)再次感谢您,这是一个简单的解释,我因提到哈希令牌而获得+1,因此,现在在对令牌进行哈希处理之后,字符串的长度将为40位数字(默认为SHA1)

对我来说,这听起来很像"除非船上有更多乘客,否则我不会堵塞船上的泄漏物"。从一开始就正确地进行此操作并不困难,而与通过mt_rand进行合并所必须要做的工作相比。但是,嘿,不管漂浮在你船上的(或不漂浮)... :)

哈哈,这很酷,我正在建造一艘Biggy船,很快就会有票...;)所以我的方式或多或少是正确的,只是我需要to脚...

您无需在Cookie中存储用户名和/或密码。您只需要存储一个唯一的标识符(随机生成)即可将其与数据库中的哈希会话标识符进行比较。

是的,这就是我的意思,说一个唯一的ID /哈希值40位数的字符串不适当地存储在我的数据库中,作为一个Rememberme_id字段,当他回来时不适比较吗?顺便说一句,如果说如果两个用户共享一个共同的哈希ID,那又是什么呢?最好将用户名保存在其他Cookie中,以便我可以比较用户名=用户名和记住我ID =哈希ID而不是通过失败

无论如何,您都需要在每个请求上寻找有效的会话ID。选项"记住我"应该仅向会话添加标志以定义更长的到期时间;

抱歉,没有到达这里标记什么?假设如果我使用session_id获得会话ID,那么接下来呢?您可以通过编辑答案来解释我吗?

不要为此使用PHP内置会话。您需要使用自己的会话系统(cookie +数据库),以便可以完全控制到期时间。

简而言之,我将创建一个sessionid cookie,并将该id存储在我的数据库中,当他回来时,我将检查该cookie是否存在,然后将它与数据库进行比较(如果是的话),然后再次设置会话变量,并将其重定向到他的主页或其他登录页面对?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值