我正在为我的网站用户构建一个方法来将他们的帐户链接在一起,以便可以在他们之间共享资源。到目前为止,我的流程是:
我想知道在最后一步中我需要多么安全。我的确认链接格式为:domain.com/link-confirm.php?fromid=xxx&toid=yyy
理论上,如果他们知道目标的用户ID,那么任何人都可以欺骗此链接,从而在未经许可的情况下建立连接。
我尝试对两个用户ID进行散列,然后在用户数据库中扫描匹配项,但password_verify
函数需要很长时间才能运行该页面超时(并且只有1000个用户)。
我想知道的是: 我的计划是否有意义? 有一种更简洁的方式吗? 我是否正确地关注欺骗(连接帐户本身并不共享用户之间的任何数据,它只是使任一用户都可以启动)?
由于
答案 0 :(得分:1)
你可以加密这两个id值,在获得它之后 - 解密它们,哈希不需要在这里使用。这样,人们需要数千年的时间来蛮力欺骗他们。
答案 1 :(得分:0)
您可以做的是为每个帐户链接请求生成一些唯一数据,并要求使用链接接受请求发送唯一数据。
因此,例如,用户A请求与用户B链接,您将请求与一些唯一数据(如随机散列和时间戳)存储在一起,然后当用户B单击"接受"在他的电子邮件中,他被发送到您服务器上的页面。电子邮件中的链接包含提交到页面的唯一数据。您检查唯一数据是否确实是用户A提交请求时生成的数据,如果是,则繁荣,用户链接。