【发布时间】:2016-02-27 14:29:28
【问题描述】:
我正在为我的网站用户构建一种方法,将他们的帐户链接在一起,以便他们之间可以共享资源。到目前为止,我的流程是:
- 1) 用户输入他想要链接的用户的电子邮件地址。
- 2) 如果找到匹配项,这些用户会收到一封电子邮件。
- 3) 电子邮件包含确认链接。如果收件人点击此按钮,两个帐户之间将建立连接。
我想知道在这最后一步中我需要多安全。我的确认链接格式为:domain.com/link-confirm.php?fromid=xxx&toid=yyy
理论上,任何人只要知道目标的用户 id,就可以欺骗此链接,从而在未经许可的情况下建立连接。
我尝试对两个用户 ID 进行哈希处理,然后扫描用户数据库以查找匹配项,但 password_verify 函数运行时间过长,导致页面超时(而且只有 1000 个用户)。
我想知道的是: 我上面的计划有意义吗? 有没有更简洁的方法? 我担心欺骗是否正确(连接帐户本身并不会在用户之间共享任何数据,它只是让任何一个用户都可以发起)?
谢谢
【问题讨论】:
-
您可以只加密两个 id 值,然后从 get 获取它 - 解密它们,这里不需要使用哈希值。这样一来,有人暴力欺骗他们将需要数千年的时间。
-
加密、散列或生成 URL 中的信息。
url?id=somegeneratedstring并且您应该有一个表格,可以将散列或生成的字符串转换为用户名和辅助用户名 id。通过添加在INSERT上更新的额外时间戳列,您还可以设置链接到期时间。 -
感谢所有回复。 @n-dru:我接受了你的加密想法,它工作得很好。将其发布为答案,我会接受。
-
@Rob 谢谢,很高兴听到这个消息!好的,我添加了答案。
标签: php user-accounts